Конвертировать байтовые строки dpkt, содержащие случайные символы
Я использую модуль Python dpkt для анализа файла pcap. Я смотрю достаточно глубоко в пакеты, что некоторые данные представлены в виде байтовых потоков. Я могу легко преобразовать обычные байтовые строки, однако некоторые байтовые строки выглядят так:
\ Т \x01\ X1C \x88
Первое значение должно быть 09, однако по какой-то причине используется экранированный символ табуляции. (шестнадцатеричный код вкладки - 09).
Он делает это и для других персонажей в других потоках.
Еще несколько примеров выходных данных:
\ X10 \ x00 @ \ x00 \
\ X05q \ x00 \ x00 \
\ X069\x9c\ п \ x00
Итак, мой вопрос: могу ли я преобразовать этот поток байтов в один без этих дополнительных символов?
В качестве альтернативы, как мне преобразовать что-то вроде '\t' в шестнадцатеричное, чтобы оно возвращало '09'?
Обновить:
Оказывается, я создавал строки для преобразования, используя функцию, которая возвращала бы \t011c88 вместо первого потока.
Оставив его в покое и используя stream.encode("hex"), сработал
1 ответ
repr
Функция по умолчанию экранирует все непечатаемые символы, как вы видели.
Чтобы получить представление в шестнадцатеричном формате, используйте
string.encode("hex")
ПРИМЕЧАНИЕ. Исходный поток байтов верен, вы должны преобразовывать его в шестнадцатеричный формат только для просмотра, а не для целостности. Это только показывает данные странным способом.