将Hex String转换为unsigned Char

时间:2016-09-03 08:43:04

标签: c++ string char hex

我有类似的东西:

string hex = "\x80\x01";

并希望将其转换为 unsigned char ,例如:

unsigned char hex_char[] = "\x80\x01";

我尝试了strcpy,但它不起作用,因为它不支持unsigned char

我很感激任何建议。

1 个答案:

答案 0 :(得分:1)

对于实践中,您可以以任何您认为自然的方式复制值。

E.g。

using Byte = unsigned char;
string hex  = "\x80\x01";
vector<Byte> bytes( hex.begin(), hex.end() );

或者如果你知道它总是只有两个字节,

using Byte = unsigned char;
string hex  = "\x80\x01";
Byte bytes[] = {{ hex[0], hex[1] }};

正式它是一个不同的鱼群,因为8位字节值\x80不符合正值char值。因此它最终成为实现定义的值。但实际上这不是一个问题,因为计算机进化已经融合了有符号整数的两个补码表示,我不认为有任何C ++编译器都没有使用它。