从文本文件到实际十六进制的文本字符串十六进制数据

时间:2013-11-14 01:03:54

标签: c++ text hex delimiter

我想将存储为文本文本中的文本的十六进制数据行转换为存储为char的十六进制数据,如下所示:

文本文件内容:

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或其他。

如果有人能就如何解决这个问题提供一些见解,我将不胜感激。我过去3天一直在拔头发。

提前谢谢!

1 个答案:

答案 0 :(得分: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
}

似乎并不太复杂......