在 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++ 中将字节数组转换为十六进制字符串?