2009-10-25 38 views
9

Bir char'in hex değerini çıkarmaya çalışıyorum ve hoş bir şekilde biçimlendiriyorum.C++ onaltılık sayı biçimi

Gerekli: 0x01 : value 0x1

alabilirim tek şey: 00x1 : value 0x1 // veya 0x1 i

iomanip kullanmıyorsanız İşte ben sahip kod, 'ch' bir imzasız karakter olarak ilan edildi. Değeri kontrol etmek ve el ile '0' eklemekten başka bir yol var mı?

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

Düzenleme:

Bir çözüm çevrimiçi bulundu: Genel baskılı numaranın solunda üzerinden

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

cevap

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

setw yana yastıkları (showbase uygulandıktan sonra), showbase ISN Senin durumunda kullanılabilir. Bunun yerine, yukarıda gösterildiği gibi tabanı el ile yazdırın. Bunu yapan benim projelerde birinde

0

:

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

ben akışı çıkışı için operatöre < < surchaged ve bir bayt onaltılı gördü şey. byte, imzasız char için bir yazım hatasıdır.