преобразовать десятичный в шестнадцатеричный питон - PullRequest
2 голосов
/ 10 ноября 2009

Я собираю сервер в Python, мне нужно преобразовать десятичное значение в шестнадцатеричное, как это:

скажем, пакет начинается с 4 байтов, которые определяют длину пакета: 00 00 00 00 если длина (пакет) = 255 мы отправим: 00 00 00 ff

Теперь моя проблема в том, что иногда пакет больше 256, как, например, 336, тогда это будет: 00 00 01 50

Я не знаю, как это сделать в Python, и я буду очень признателен за любую помощь. Спасибо !

Ответы [ 2 ]

8 голосов
/ 10 ноября 2009
>>> import struct
>>> struct.pack(">i", 336)
'\x00\x00\x01P'

Модуль struct упаковывает и распаковывает значения python в байты. Формат ">i" означает 4-байтовое целое число с прямым порядком байтов.

3 голосов
/ 10 ноября 2009

А как же

"%0.8x" % data

Пример:

>>> print "%0.8x" % 366
0000016e

>>> print "%0.8x" % 336
00000150
...