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

标签 c++ hex stringstream unsigned-char

我正在寻找可以读取长十六进制字符串(例如 SHA256 哈希)并将其转换为无符号字符数组的 C++ 库函数或内置函数。我尝试为此使用 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/

相关文章:

symfony - 在 Twig 中生成随机的十六进制颜色

C++ std::stringstream 似乎导致线程在 SunOS 下挂起或死亡

c++ - 如何先按值对 std::map 排序,然后按键排序?

c++ - 构建 64 位 dll 时为 "File contains invalid .pdata contributions"

java - 如何从 blob 数据类型获取完整的十六进制值?

c++ - 读取文件时有问题的空格

c++ - 模拟 istringstream 的 ferror(FILE *)?

c++ - 使没有成员的仿函数成为类成员对象或堆栈对象是否更有效?

c++ - 将浮点十进制值转换为分数

c++ - 如何在特定位置使用 switch 或 if-else 步骤将十六进制值分配给数组?