例如,我有一个cstring"E8 48 D8 FF FF 8B 0D"
(包括空格)需要转换为等效的 unsigned char 数组{0xE8,0x48,0xD8,0xFF,0xFF,0x8B,0x0D}
。什么是有效的方法来做到这一点?谢谢!
编辑:我无法使用 std 库...所以请将此视为 C 问题。对不起!
这回答了original问题,要求 C++ 解决方案。
您可以使用istringstream
与hex
操纵器:
std::string hex_chars("E8 48 D8 FF FF 8B 0D");
std::istringstream hex_chars_stream(hex_chars);
std::vector<unsigned char> bytes;
unsigned int c;
while (hex_chars_stream >> std::hex >> c)
{
bytes.push_back(c);
}
注意c
必须是一个int
(or long
,或其他一些整数类型),而不是char
;如果它是一个char
(or unsigned char
), 错的>>
将调用重载并从字符串中提取单个字符,而不是十六进制整数字符串。
额外的错误检查以确保提取的值符合char
将是一个好主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)