我只想将一个字节转换为ASCII字符。
问题在于:
假设我们有一个如下角色:
char a = 0x0b;
我只想将其转换为十六进制ASCII字符表示'b'。
答案 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
初始化时的编译器警告。