2015-07-21 63 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