2012-02-26 229 views
0

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

现在我通过线环线和各行 我做了以下

这是在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++; 

现在我担心的是,一些从数据十六进制文件是0x00,它们是空的,它们被正确添加。或者我在这里错过了一些东西。

其实这些都是理应包含入侵,我想给他们比较,我有那么我应该用线把它们转换,并通过他们行到需要

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

回答

0
功能模式库包痕迹

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

为了标记字符串的结尾,终止字符串以\ 0结尾。在事先不知道字符串大小的情况下,这是您希望达到的最好性能(顺序n),如果您已经知道字符串大小,可以通过在字符串前添加字符串大小并插入大小令牌在开始时,如

5 \ 0你会告诉字符串分析器有5个字母跟着,这意味着查找是小得多的顺序n,因为你不再需要读取n个字节,你只能读取大小字节。

+0

实际上这些都是假设包含入侵的数据包追踪我想将它们与模式库进行比较,因此我应该将它们转换并逐行传递给需要搜索的函数(size_t TextLength,const char *文本,const向量&patterns); – user1231229 2012-02-26 13:49:08