2009-10-25 19 views
9

मैं एक char के हेक्स मान को आउटपुट करने और इसे एक अच्छे तरीके से प्रारूपित करने का प्रयास कर रहा हूं।सी ++ हेक्स संख्या प्रारूप

आवश्यक: 0x01 : value 0x1

सभी मैं प्राप्त कर सकते हैं: 00x1 : value 0x1 // या 0x1 अगर मैं

iomanip का उपयोग नहीं करते यहाँ कोड मैं है, 'ch' एक अहस्ताक्षरित चार होने के लिए घोषित किया गया। क्या मूल्य की जांच करने और मैन्युअल रूप से '0' जोड़ने के अलावा इसे करने का कोई अन्य तरीका है ??

cout << showbase; 
cout << hex << setw(2) << setfill('0') << (int) ch; 

संपादित करें:

मैं एक समाधान ऑनलाइन पाया: समग्र मुद्रित संख्या के बाईं ओर बाहर

cout << internal << setw(4) << setfill('0') << hex << (int) ch 

उत्तर

13
std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch; 

setw के बाद पैड (के बाद showbase लागू किया जाता है), showbase प्रतिसाद नहीं आपके मामले में प्रयोग योग्य नहीं है। इसके बजाए, ऊपर दिखाए गए आधार को मैन्युअल रूप से प्रिंट करें।

0

अपनी परियोजनाओं मैं इस किया था पर एक में:

ostream &operator<<(ostream &stream, byte value) 
{ 
    stream << "0x" << hex << (int)value; 
    return stream; 
} 

मैं ऑपरेटर < < धारा उत्पादन के लिए surchaged, और कुछ भी है कि एक बाइट हेक्साडेसिमल में दिखाया गया था। बाइट हस्ताक्षर किए गए चार के लिए एक टाइपिफ़ है।

संबंधित मुद्दे