如何在c++中将十六进制字符串拆分为数组

How to split a hexadecimal string into an array in c++?

本文关键字:字符串 拆分 数组 十六进制 c++      更新时间:2023-10-16

我有这个字符串

string in = "Two One Nine Two";

我使用以下函数将其转换为十六进制

    std::string string_to_hex(const std::string& input)
{
    static const char* const lut = "0123456789ABCDEF";
    size_t len = input.length();
    std::string output;
    output.reserve(2 * len);
    for (size_t i = 0; i < len; ++i)
    {
        const unsigned char c = input[i];
        output.push_back(lut[c >> 4]);
        output.push_back(lut[c & 15]);
    }
    return output;
}

现在,如何将其拆分为像这样的数组

int plain[16] = {0x54,0x77,0x6F,0x20,0x4F,0x6E,0x65,0x20,0x4E,0x69,0x6E,0x65,0x20,0x54,0x77,0x6F};

这应该会有所帮助:

string in = "Two One Nine Two";
strncpy(&plain[0], in.c_str(), 16);

字符串文字已经以您想要的格式存储在内存中
我展示了一种将其复制到字符数组的方法。

如果我理解你想做什么…

您需要做的是用空格作为分隔符来标记输入字符串。

一旦你有了它,这是一个简单的问题,匹配单词和数字-一个简单compare或使用如果==可以。