Представление байтов Python - PullRequest
0 голосов
/ 07 октября 2018

Я пишу шестнадцатеричный просмотрщик на python для изучения необработанных байтов пакетов.Я использую модуль dpkt.

Я предположил, что один шестнадцатеричный байт может иметь значение от 0x00 до 0xFF.Однако я заметил, что представление python bytes выглядит по-другому:

'b .. \ x8a \ n \ x1e + \ x1f \ x84V \ xf2 \ xca $ \ xb1 ...'

Я не понимаю, что означают эти символы.Как я могу перевести эти символы в исходные 1-байтовые значения, которые могут быть показаны в программе просмотра в шестнадцатеричном формате?

1 Ответ

0 голосов
/ 07 октября 2018

\ xhh указывает шестнадцатеричное значение hh.то есть это способ Python 3 для кодирования 0xhh.

См. https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals

Символ b в начале строки указывает на то, что переменные должны иметь тип байтов, а нечем ул.Приведенная выше ссылка также охватывает это.\ N является символом новой строки.

Вы можете использовать bytearray для хранения и доступа к данным.Вот пример использования строки байтов в вашем вопросе.

example_bytes = b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1'
encoded_array = bytearray(example_bytes)
print(encoded_array)
>>> bytearray(b'\x8a\n\x1e+\x1f\x84V\xf2\xca$\xb1')
# Print the value of \x8a which is 138 in decimal.
print(encoded_array[0])
>>> 138
# Encode value as Hex.
print(hex(encoded_array[0]))
>>> 0x8a

Надеюсь, это поможет.

...