我正在寻找一个C ++库函数或内置函数,该函数可以读取长的十六进制字符串(例如SHA256哈希)并将其转换为无符号char数组。我试图为此使用stringstream但无济于事。
例如 -
bool StringToHex(std::string inStr, unsigned char *outStr);
Input - inStr = "5a12b43d3121e3018bb12037" //48 bytes
Output- outStr* = {0x5a, 0x12, 0xb4, 0x3d, 0x31, 0x21, 0xe3, 0x01, 0x8b, 0xb1, 0x20, 0x37} //24 bytes
最佳答案
在调用outStr
之前为其分配足够的空间。
bool StringToHex(const std::string &inStr, unsigned char *outStr)
{
size_t len = inStr.length();
for (size_t i = 0; i < len; i += 2) {
sscanf(inStr.c_str() + i, "%2hhx", outStr);
++outStr;
}
return true;
}
关于c++ - 在C++中将十六进制字符串转换为字节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26269763/