如何将十六进制字符串转换为无符号字符数组?

2024-03-25

例如,我有一个cstring"E8 48 D8 FF FF 8B 0D"(包括空格)需要转换为等效的 unsigned char 数组{0xE8,0x48,0xD8,0xFF,0xFF,0x8B,0x0D}。什么是有效的方法来做到这一点?谢谢!

编辑:我无法使用 std 库...所以请将此视为 C 问题。对不起!


这回答了original问题,要求 C++ 解决方案。

您可以使用istringstreamhex操纵器:

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(使用前将#替换为@)

如何将十六进制字符串转换为无符号字符数组? 的相关文章

随机推荐