我想将存储为文本文本中的文本的十六进制数据行转换为存储为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天一直在拔头发。
提前谢谢!
答案 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
}
似乎并不太复杂......