如何在c ++中将字节转换为ASCII十六进制表示?

时间:2017-07-29 10:35:51

标签: c++ char byte

我只想将一个字节转换为ASCII字符。

问题在于:

假设我们有一个如下角色:

char a = 0x0b;

我只想将其转换为十六进制ASCII字符表示'b'。

1 个答案:

答案 0 :(得分:4)

只需使用相应的I/O manipulator

即可
B

看到它正常工作here

另一种方法是使用一个简单的字符表:

char a = 0x0b;
std::ostringstream oss;
oss << std::hex << (int)a;
    // ^^^^^^^^
char ascii = oss.str()[0];

要提取大于char a = 0x0b; char ascii = "0123456789abcdef"[a]; 的值,请使用位移和屏蔽:

0x0f

这是live example

注意:我一直在使用上面的unsigned char a = 0xab; const char* hexDigitTable = "0123456789abcdef"; char asciiDigit0 = hexDigitTable[a & 0x0f]; char asciiDigit1 = hexDigitTable[(a & 0xf0) >> 4]; std::cout << asciiDigit1 << asciiDigit0 << std::endl; 来摆脱unsigned char初始化时的编译器警告。