0

我想将文本文件中以文本形式存储的十六进制数据行转换为以字符形式存储的十六进制数据,如下所示:

文本文件内容:

41:89:47:AB

A7:33:1D:AC

所需格式:

char Data[NumberOfLinesInFile][HexPerLine];

请注意,每行的十六进制数是固定的。

数据应如下所示:

Data[0][0] = 0x41;
Data[0][1] = 0x89;
Data[0][2] = 0x47;
Data[0][3] = 0xAB;
Data[1][0] = 0xA7;
Data[1][1] = 0x33;
Data[1][2] = 0x1D;
Data[1][3] = 0xAC;

我遇到的问题是努力让文本行由“:”分隔并且也解释为十六进制,而不是 ASCII 或其他。

如果有人能提供一些关于如何解决这个问题的见解,我将不胜感激。最近三天我一直在拔头发。

先感谢您!

4

1 回答 1

1

主要的潜在问题是读取一行由冒号分隔的十六进制值。最简单的方法似乎是将每一行读入一个字符串,用空格替换冒号,并在将基数设置为十六进制后读取值:

for (std::string line; std::getline(in, line); ) {
    std::replace(line.begin(), line.end(), ':', ' ');
    std::istringstream in(line);
    std::vector<unsigned char> values{ std::istream_iterator<int>(in >> std::hex),
                                       std::istream_iterator<int>() };
    // now distribute the chars
}

好像不是很复杂...

于 2013-11-14T01:13:28.710 回答