конвертировать строки байтов dpkt, содержащие случайные символы

Я использую модуль Python dpkt для анализа файла pcap. Я изучаю пакеты достаточно глубоко, чтобы некоторые данные были представлены в виде потоков байтов. Я могу достаточно легко преобразовать обычные байтовые строки, однако некоторые байтовые строки выглядят так:

\t\x01\x1c\x88

Первое значение должно быть 09, однако по какой-то причине используется экранированный символ табуляции. (шестнадцатеричный код вкладки — 09).

Это делается и для других персонажей в других потоках.

Еще несколько примеров выходных данных:

\x10\x00@\x00\

\x05q\x00\x00\

\x069\x9c\n\x00

Итак, мой вопрос: могу ли я преобразовать этот поток байтов в один без этих дополнительных символов?

В качестве альтернативы, как мне преобразовать что-то вроде «\ t» в шестнадцатеричный, чтобы он возвращал «09»?

Обновление:

Оказывается, я создавал строки для преобразования с помощью функции, которая возвращает \t011c88 вместо первого потока.

Оставить его в покое и использовать stream.encode("hex") сработало


person Alex Hunter    schedule 19.08.2015    source источник


Ответы (1)


Функция repr по умолчанию экранирует все непечатаемые символы, как вы уже видели.

Чтобы получить шестнадцатеричное представление, используйте

string.encode("hex")

ПРИМЕЧАНИЕ. Исходный поток байтов правильный, вы должны преобразовывать его в шестнадцатеричный формат только для просмотра, а не для обеспечения целостности. Он только показывает данные странным образом.

person muddyfish    schedule 19.08.2015
comment
Ах, только что понял, что я странным образом создавал шестнадцатеричные строки (я отредактирую вопрос, чтобы сказать это). Когда я перестаю это делать, string.encode работает нормально. Отметить как ответ. - person Alex Hunter; 19.08.2015