【问题标题】:How to split a hexadecimal string into an array in c++?如何在 C++ 中将十六进制字符串拆分为数组?
【发布时间】:2016-03-17 22:54:48
【问题描述】:

我有这个字符串

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};

【问题讨论】:

  • 我不认为你理解这个任务。例如,字符w 不是十六进制值。也许您需要在转换为十六进制之前将“二”转换为数字 2。
  • 如果您从input.c_str() 迭代结果,您会注意到它是一个类似于您的plain 的数组。

标签: c++ arrays string split hex


【解决方案1】:

这应该会有所帮助:

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

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

【讨论】:

    【解决方案2】:

    如果我明白你想要做什么......

    你需要做的是tokenize the input string,空格是分隔符。

    一旦你有了,将单词与数字匹配很简单 - 一个简单的compare 或使用 if == 就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 2014-12-12
      • 2018-01-31
      • 2017-09-15
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多