在文本中以十六进制表示的十六进制

时间:2012-02-26 13:31:08

标签: c++ text hex

嗨伙计们,我有十六进制的以下文件格式,因为每个字母编号表示如下。 DC-01-00-00-80-11-D9-4E-C0-A8-01-24-C0-A8-01-57-13-C4-13-C4-01-BD(从文本文件中读取)

现在我逐行循环和每一行 我做了以下

这是每行读取的for循环内部

istringstream ss(tempString.substr(i,2));
size_t converted;
ss >> hex >> converted;
char appended = (char)converted;
 // cout << tempString.substr(i,2)+ " "  << appended<<(int)i << (int)firstFlag<<endl;
buildString+= appended;
      i++;

现在我担心的是,hex文件中的一些数据是0x00,如果它们正确添加则为null。或者我在这里遗漏了一些东西。

实际上那些是数据包跟踪,据说包含入侵我想将它们与我所拥有的模式库进行比较,所以我应该将它们转换并将它们逐行传递给需要的函数

 Search( size_t TextLength, const char *Text, const vector<const char *> &patterns ); 

1 个答案:

答案 0 :(得分:0)

如果这只是您正在读/写的“字符串”,那么NULL是完全可以接受的。

Null终止字符串以\ 0结尾,以标记字符串的结尾。如果不事先知道字符串的大小,这是你希望实现的最佳性能(订单n),如果你已经通过在字符串之前附加字符串大小并插入大小标记来了解字符串大小,这可以有所减少。在开始时,如

5 \ 0Hello会告诉字符串解析器跟随5个字母,这意味着查找比订单n小得多,因为您不再需要读取n个字节,只读取大小字节。