2015-12-11 35 views
0

我有这个字符串如何在C++中将十六进制字符串拆分为数组?

string in = "Two One Nine Two"; 

我把它转换使用下面的函数

std::string string_to_hex(const std::string& input) 
{ 
    static const char* const lut = "ABCDEF"; 
    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}; 
+0

我不认为你理解这个任务。例如,字符“w”不是十六进制值。也许你需要在转换为十六进制之前将“Two”转换为数字2。 –

+0

如果你遍历'input.c_str()'的结果,你会发现它是一个像'plain'这样的数组。 –

回答

0

这应有助于为十六进制:

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

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

0

如果我明白你正在尝试做的...

你需要做的是tokenize the input string与该空间的分隔符。

一旦你知道这是一个简单的问题匹配的话与数字 - 一个简单的compare或如果==将使用。

相关问题