आप यह hh
बताने के लिए उपयोग कर सकते हैं printf
कि तर्क एक अहस्ताक्षरित चार है। उपयोग 0
शून्य गद्दी पाने के लिए और 2
2 के लिए चौड़ाई सेट करने x
या X
कम / अपरकेस हेक्स पात्रों के लिए।
uint8_t a = 0x0a;
printf("%02hhX", a); // Prints "0A"
printf("0x%02hhx", a); // Prints "0x0a"
संपादित करें : यदि पाठकों को 2501 के बारे में चिंतित हैं कि यह किसी भी तरह से 'सही' प्रारूप निर्दिष्ट नहीं है, तो मैं सुझाव देता हूं कि वे फिर से printf
लिंक पढ़ें । विशेष रूप से:
भले ही% c को आर्गुमेंट की उम्मीद है, लेकिन जब एक वैरिएडिक फंक्शन को बुलाया जाता है, तब होने वाले पूर्णांक प्रमोशन की वजह से चार पास करना सुरक्षित होता है।
फिक्स्ड-चौड़ाई वर्ण प्रकार (int8_t, आदि) के लिए सही रूपांतरण विनिर्देश हेडर <cinttypes>
(C ++) या <inttypes.h>
(C) में परिभाषित किए गए हैं (हालांकि PRIdMAX, PRIuMAX, आदि% jd,% ju, आदि का पर्याय है) ।
के रूप में हस्ताक्षरित बनाम अहस्ताक्षरित के बारे में उसकी बात, इस मामले में कोई फर्क नहीं पड़ता क्योंकि मूल्यों को हमेशा सकारात्मक होना चाहिए और एक हस्ताक्षरित इंट में आसानी से फिट होना चाहिए। वैसे भी कोई हस्ताक्षरित हेक्साइडएक्सिमल प्रारूप निर्दिष्ट नहीं है।
संपादित करें २ : ("कब-कब-कब-आप-गलत हैं" संस्करण):
यदि आप पृष्ठ 311 (पीडीएफ का 329) पर वास्तविक C11 मानक पढ़ते हैं:
hh: निर्दिष्ट है कि एक के बाद d
, i
, o
, u
, x
, या X
रूपांतरण विनिर्देशक पर लागू होता है signed char
या unsigned char
तर्क (तर्क पूर्णांक प्रोन्नति के अनुसार पदोन्नत जाएगा है, लेकिन अपने मूल्य के लिए परिवर्तित किया जाएगा signed char
या unsigned char
मुद्रण से पहले); या कि निम्न n
रूपांतरण विनिर्देशक एक सूचक के लिए एक signed char
तर्क पर लागू होता है ।
"\xc0\xc0abc123"