将字符串转换为无符号字符数组/字节数组

时间:2020-01-10 12:24:11

标签: c++ arrays

如何转换以下字符串:

std::string str = "x89x30x50";

此以下具有转义序列的无符号char数组/字节数组:

unsigned char char_arr[1024] = "\x89\x30\x50";

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则希望将十六进制值(以'x'开头)的字符串拆分为字节值。

您可以通过标记字符串(使用定界符“ x”)并将每个标记转换为字节值来实现:

类似这样的东西:

#include <string>
#include <sstream>

int main()
{
    std::string str = "x89x30x50";
    unsigned char char_arr[1024] = "";
    std::istringstream iss(str);
    std::string token;
    int i = 0;
    while (std::getline(iss, token, 'x'))
    {
        if (token.empty()) continue;
        char_arr[i++] = static_cast<unsigned char>(std::stoi(token, nullptr, 16));
    }
    //char_arr = {0x89,0x30,0x50,0,0,...}
}