【问题标题】:hex represented in text to char hex以文本表示的十六进制为 char 十六进制
【发布时间】:2012-02-26 13:31:08
【问题描述】:

大家好,我有以下十六进制文件格式,因为每个字母数字表示如下。 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,如果它们添加正确,它们是空的。或者我在这里遗漏了一些东西。

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

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

【问题讨论】:

    标签: c++ text hex


    【解决方案1】:

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

    Null 终止的字符串以 \0 结尾,以标记字符串的结尾。在事先不知道字符串大小的情况下,这是您希望达到的最佳性能( Order n ),如果您已经知道字符串大小,可以通过在字符串前面附加字符串大小并插入大小标记来稍微减少开头如

    5\0Hello 这将告诉字符串解析器后面跟着 5 个字母,这意味着查找比 Order n 小得多,因为您不再需要读取 n 个字节,您只需读取 size 个字节。

    【讨论】:

    • 实际上那些是据称包含入侵的数据包跟踪我想将它们与我拥有的模式库进行比较,因此我应该将它们转换并将它们逐行传递给需要 Search( size_t TextLength, const char *Text, const vector &patterns );
    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 2014-12-20
    • 1970-01-01
    • 2011-12-09
    • 2018-07-26
    • 2011-10-02
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多