#include <cstdio>
#include <string>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <vector>
std::string binToHex(const unsigned char *data,size_t size)
{
std::ostringstream strHex;
strHex << std::hex << std::setfill('0');
for (size_t i = 0; i < size; ++i) {
strHex << std::setw(2)<<static_cast<unsigned int>(data[i]);
}
return strHex.str();
}
std::vector<unsigned char> hexToBin(const std::string &hex)
{
std::vector<unsigned char> dest;
auto len = hex.size();
dest.reserve(len / 2);
for (decltype(len) i = 0; i < len; i += 2)
{
unsigned int element;
std::istringstream strHex(hex.substr(i, 2));
strHex >> std::hex >> element;
dest.push_back(static_cast<unsigned char>(element));
}
return dest;
}
int main(void)
{
const char *strTest = "CED2CAC7B8F6B4F3D0DCC3A8";
auto charVec = hexToBin(strTest);
for (auto element : charVec) {
std::cout << element;
}
std::cout << std::endl;
auto strHex = binToHex(charVec.data(), charVec.size());
std::cout << strHex << std::endl;
system("pause");
return 0;
}
C++十六进制字符串与数组互转
最新推荐文章于 2023-05-03 17:58:13 发布
该代码示例展示了如何在C++中使用标准库函数将十六进制字符串转换为字节向量,以及将字节数据转换回十六进制字符串。主要函数包括binToHex和hexToBin,它们支持二进制数据和十六进制字符串之间的互换。
摘要由CSDN通过智能技术生成