шестнадцатеричный представлен в тексте в шестнадцатеричный символ - PullRequest
0 голосов
/ 26 февраля 2012

Привет, ребята. У меня есть следующий формат файла в шестнадцатеричном виде, так как каждая буква представлена ​​следующим образом. DC-01-00-00-80-11-D9-4E-C0-A8-01-24-C0-A8-01-57-13-C4-13-C4-01-BD (читать так из текстового файла )

теперь я зацикливаюсь построчно и каждая строка Я делаю следующее

внутри цикла для каждой прочитанной строки

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 ); 

1 Ответ

0 голосов
/ 26 февраля 2012

Если это просто «строки», которые вы читаете / пишете, тогда NULL вполне приемлемо.

Строки с нулевым символом в конце заканчиваются на \ 0, чтобы отметить конец строки. Не зная заранее размер строки, это лучшая производительность, которую вы можете надеяться достичь (Порядок n), ее можно несколько уменьшить, если вы уже знаете размер строки, добавив размер строки перед строкой и вставив маркер размера. в начале, такие как

5 \ 0 Привет, который сообщит анализатору строк, что за 5 буквами следует, это означает, что поиск намного меньше, чем Порядок n, так как вам больше не нужно читать n байтов, вы только читаете байты размера.

...