我有一个unsigned char
要转换为十六进制的。我知道printf("%02X", char)
给了我想要的输出,但它被发送到终端,因此没什么用。如何将字符转换为十六进制并以与 printf 相同的方式将其存储在变量中?
问问题
3111 次
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
请注意:您没有将其转换为十六进制值,而是转换为以空字符结尾的字符串。将其存储在模型的变量中是一种废话。
于 2012-09-10T16:21:12.937 回答