在 C++ 中将十六进制字符串转换为字节数组

Posted

技术标签:

【中文标题】在 C++ 中将十六进制字符串转换为字节数组【英文标题】:Convert Hex String to BYTE Array in C++ 【发布时间】:2017-12-01 14:51:40 【问题描述】:

转换此字符串的最简单方法是什么:string strHex = "0123456789ABCDEF0123456789ABCDEF";

在这个 BYTE 数组中:BYTE bArray[] = 0x01,0x23,0x45,0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01,0x23,0x45,0x67, 0x89, 0xAB, 0xCD, 0xEF ;

谢谢!

【问题讨论】:

SO 不是代码编写服务。请展示您的尝试,并说明您的解决方案中的问题。 最简单的方法是尝试一下,让它在适当的时候向 *** 寻求帮助(这意味着不寻求调试帮助),然后发布到代码审查以征求有关如何改善 这是我最后的选择。我已经尝试了很多,我在这个论坛和谷歌搜索过,我不能。我将添加我的尝试。感谢您的帮助。 std::vector<unsigned char> bytes; for(auto it = strHex.begin(); it < strHex.end() - 1; it += 2) bytes.push_back(std::stoi(std::string(it, it + 2), 0, 16)); 【参考方案1】:

我使用 xxd 工具将所需的任意数据文件转换为可编译的字节数组。

echo Good data > good.bin
xxd -i good.bin > good_bin.cpp
clang++ -c good_bin.cpp

【讨论】:

以上是关于在 C++ 中将十六进制字符串转换为字节数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual C++ 中将字节数组转换为十六进制字符串?

如何在 C++ 中将十六进制字符串转换为字节字符串? [复制]

如何在 C 中将字节数组转换为十六进制字符串?

如何在Java中将字节数组转换为十六进制格式

在 C 中将 int 转换为 2 字节的十六进制值

在 Python 3 中将字节转换为十六进制字符串的正确方法是啥?