【问题标题】:Convert Hex String to Bytes in C++在 C++ 中将十六进制字符串转换为字节
【发布时间】:2014-10-09 03:22:21
【问题描述】:

我正在寻找可以读取长十六进制字符串(例如 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 设为std::ostream & 而不是unsigned char *?然后你可以传入一个std::ostringstream,这比使用指针更安全。

标签: c++ hex stringstream unsigned-char


【解决方案1】:

在调用之前为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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2023-03-07
    • 2022-06-18
    • 2017-08-23
    • 2022-07-22
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多