0

unsigned char16進数に変換したいものがあります。必要な出力が得られることはわかっprintf("%02X", char)ていますが、端末に送信されるため、ほとんど役に立ちません。printfと同じように、文字を16進数に変換し、変数に格納するにはどうすればよいですか?

4

4 に答える 4

6

次のようなものはどうですか?

stringstream ss;
ss << std::hex << std::setw(2) << (unsigned int) x;

cout << ss.str() << endl;

ただし、もう少し微調整することをお勧めしstringstreamます。

于 2012-09-10T16:16:14.873 に答える
3

sprintf代わりに、たとえばバッファに使用します

char str[50];
sprintf(str, "%X02", char);
于 2012-09-10T16:15:19.973 に答える
2

多分最速のもの?

struct hex_uchar {
   hex_uchar(unsigned char c)
   {
      value[0] = hc[c >> 4];
      value[1] = hc[c & 0xF];
      value[2] = '\0';
   }
   char value[3];
   static char hc[16];
};
char hex_uchar::hc[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
                           'A', 'B', 'C', 'D', 'E', 'F' }; 


int main() {
   std::cout << hex_uchar('A').value << std::endl;
}
于 2012-09-10T19:40:08.103 に答える
1

注意:16進値に変換するのではなく、nullで終了する文字列に変換します。モデルの変数に保存するのはナンセンスです。

于 2012-09-10T16:21:12.937 に答える