%#08X
রূপান্তর সাথে মান আগে বসে আবশ্যক 0X
; যে স্ট্যান্ডার্ড দ্বারা প্রয়োজনীয়। স্ট্যান্ডার্ডের কোনও প্রমাণ নেই যে উপসর্গটির দৈর্ঘ্যের অংশ হিসাবে গণনা করা ছাড়া স্পেসিফিকেশনের অংশের #
আচরণের পরিবর্তন করা উচিত (যাতে আপনি ব্যবহার করতে চান / ব্যবহার করতে পারেন । যদি আমার মতো, আপনার হেক্সস হিসাবে উপস্থাপন করা পছন্দ করেন তবে , তারপরে আপনাকে পছন্দসই ফলাফল অর্জন করতে ব্যবহার করতে হবে You আপনি ব্যবহার করতে পারেন08
0X
%#010X
0x1234CDEF
0x%08X
%#.8X
এবং এটি নেতৃস্থানীয় শূন্যগুলি সন্নিবেশ করা উচিত।
নিম্নলিখিত কোডে বিভিন্নতার চেষ্টা করুন:
#include <stdio.h>
int main(void)
{
int j = 0;
printf("0x%.8X = %#08X = %#.8X = %#010x\n", j, j, j, j);
for (int i = 0; i < 8; i++)
{
j = (j << 4) | (i + 6);
printf("0x%.8X = %#08X = %#.8X = %#010x\n", j, j, j, j);
}
return(0);
}
একটি RHEL 5 মেশিনে এবং ম্যাক ওএস এক্সে (10.7.5) আউটপুটটি ছিল:
0x00000000 = 00000000 = 00000000 = 0000000000
0x00000006 = 0X000006 = 0X00000006 = 0x00000006
0x00000067 = 0X000067 = 0X00000067 = 0x00000067
0x00000678 = 0X000678 = 0X00000678 = 0x00000678
0x00006789 = 0X006789 = 0X00006789 = 0x00006789
0x0006789A = 0X06789A = 0X0006789A = 0x0006789a
0x006789AB = 0X6789AB = 0X006789AB = 0x006789ab
0x06789ABC = 0X6789ABC = 0X06789ABC = 0x06789abc
0x6789ABCD = 0X6789ABCD = 0X6789ABCD = 0x6789abcd
আমি 0 এর চিকিত্সা দেখে কিছুটা অবাক হই; 0X
উপসর্গটি কেন বাদ দেওয়া হয়েছে তা আমি পরিষ্কার নই , তবে দুটি পৃথক সিস্টেম এটি করার সাথে এটি মানক হতে হবে। এটি #
বিকল্পটির বিরুদ্ধে আমার কুসংস্কারগুলি নিশ্চিত করে ।
শূন্যের চিকিত্সা মান অনুযায়ী।
.6 পতাকার অক্ষর এবং তাদের অর্থ হ'ল :
...
#
ফলাফলটি "বিকল্প আকারে" রূপান্তরিত হয়। ... x
(বা X
) রূপান্তরকরণের জন্য, একটি ননজারো ফলাফল এটির 0x
(বা 0X
) প্রিফিক্স করেছে। ...
(সামনে জোর দাও.)
নোট করুন যে ব্যবহার %#X
করে হেক্স ডিজিট এবং 0X
উপসর্গ হিসাবে আপার ক্ষেত্রে অক্ষর ব্যবহার করা হবে ; %#x
হেক্সস ডিজিটের জন্য এবং 0x
উপসর্গ হিসাবে ছোট হাতের অক্ষর ব্যবহার করে ব্যবহার করা হবে । আপনি যদি 0x
উপসর্গ এবং বড় হাতের অক্ষর হিসাবে পছন্দ করেন তবে আপনাকে 0x
আলাদাভাবে কোড করতে হবে :0x%X
। অন্যান্য ফর্ম্যাট সংশোধক অবশ্যই প্রয়োজন হিসাবে যুক্ত করা যেতে পারে।
ঠিকানা মুদ্রণের জন্য <inttypes.h>
শিরোনাম এবং uintptr_t
প্রকার এবং PRIXPTR
ম্যাক্রো ফর্ম্যাটটি ব্যবহার করুন :
#include <inttypes.h>
#include <stdio.h>
int main(void)
{
void *address = &address; // &address has type void ** but it converts to void *
printf("Address 0x%.12" PRIXPTR "\n", (uintptr_t)address);
return 0;
}
উদাহরণ আউটপুট:
Address 0x7FFEE5B29428
দৈর্ঘ্যে আপনার বিষ চয়ন করুন - আমি দেখতে পেয়েছি যে ম্যাকের চলমান ম্যাকোসগুলিতে ঠিকানাগুলির জন্য 12 এর যথার্থতা ভাল কাজ করে। .
সর্বনিম্ন নির্ভুলতা (অঙ্কগুলি) নির্দিষ্ট করার জন্য এর সাথে একত্রিত হয়ে এটি নির্ভরযোগ্যভাবে ঠিকানাগুলিকে ফর্ম্যাট করে। আপনি যদি নির্ভুলতা 16 এ সেট করেন তবে ম্যাকের উপরে আমার অভিজ্ঞতায় অতিরিক্ত 4 ডিজিট সর্বদা 0 থাকে তবে অবশ্যই 12-র পরিবর্তে 16 ব্যবহারের জন্য অবশ্যই একটি ক্ষেত্রে তৈরি করা যেতে পারে 64-বিট কোডে (তবে আপনি 8 এর জন্য ব্যবহার করবেন 32-বিট কোড)।
0x%.8X
? এটি শূন্যের সাথে সীসা পূরণ করবে । (এটি0x
কেবল একটি উপস্থাপিকা, তবে আপনার সম্ভবত এটি সম্পর্কে অবহিত রয়েছে)।