python中的网络包长度

时间:2015-07-21 14:28:43

标签: python string network-programming hex

我正在尝试生成包含数据长度的包头。 例如,如果数据长度为5,则十六进制字符串应为: ' 0500' 如果它是100,那么它应该是: ' 6400' 如果1050: ' 1A40' 等等。 在python中有一个很好的方法吗? 非常感谢你。

1 个答案:

答案 0 :(得分:1)

使用struct.pack('<H', ...)以小端格式将int打包为字符串中的2字节无符号short。然后使用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'