Отправка шестнадцатеричных пакетов в Python - PullRequest
5 голосов
/ 06 октября 2011

Как бы я отправил шестнадцатеричные данные в пакете? Я пытаюсь скопировать пакет точно, используя шестнадцатеричный код вместо ASCII. Все, что я ищу, это аргумент sendto, если, скажем, гекс, который мне нужно было отправить, был 00AD12.

1 Ответ

11 голосов
/ 06 октября 2011

Используйте struct для преобразования между байтами (обычно выраженными в шестнадцатеричном виде) и числами:

>>> import struct
>>> struct.pack('!I', 0xAD12)
b'\x00\x00\xad\x12'

Если у вас есть шестнадцатеричная строка и вы хотитечтобы преобразовать его в байты, используйте binascii.unhexlify:

>>> import binascii
>>> binascii.unhexlify('ad12')
b'\xad\x12'
...