8位字符到十六进制表示

时间:2011-02-16 04:14:21

标签: c++

我正在尝试将8位char转换为十六进制视图,如下所示:

00 03 80 45 E5 93 00 18 02 72 3B 90 88 64 11 00 
45 FF 00 36 00 FF 45 00 00 34 7B FE 40 00 40 02

但是有些字符包含负值,这会使更大的十六进制值超过2位数。我如何得到如上所示的每一个?

2 个答案:

答案 0 :(得分:4)

我不知道你使用什么格式化,但要确保你的字节保存变量是一个unsigned char(假设你的平台上的字符串是8位,它在所有理智的平台上),之前格式。如果您的平台具有理智的BYTE typedef,请使用它。您还可以使用boost::uint8_t类型来存储字节并避免出现这些问题。例如:

char c=-25; // Oh no, this is one of those pesky "negative" characters
unsigned char byteVal=static_cast<unsigned char>(c); // FTFY

// Do the formatting with byteVal

答案 1 :(得分:0)

“负字节值”是矛盾的,字节是没有任何符号的位数,通常是无符号字符,当为8位时。可以包含值0-255或十六进制00到FF。