2015-07-21 49 views
1

我正在嘗試生成包含數據長度的數據包頭。 例如,如果數據長度是5,十六進制字符串假設是: 「0500」 如果它是100,它假設是: 「6400」 如果1050: 「1A40」 等。 有沒有一種很好的方式來做到這一點在python中? 非常感謝。python中的網絡數據包長度

回答

1

使用struct.pack('<H', ...)以小尾數格式將int作爲2字節無符號短整型打包到字符串中。然後用binascii.hexlify返回字符串的十六進制表示:

import struct 
import binascii 

binascii.hexlify(struct.pack('<H', 1050)) 
# '1a04' 

binascii.hexlify(struct.pack('<H', 100)) 
# '6400' 

binascii.hexlify(struct.pack('<H', 5)) 
# '0500' 
+0

非常感謝! 有沒有辦法做到這一點,如果我想要的東西: 5:'05000000' 100:'64000000' 和甚至更大的數字比無符號短? – adif

+0

使用'binascii.hexlify(struct.pack(' unutbu