python 中的网络数据包长度

network packet lengths in python

我正在尝试生成一个包头,其中包含数据长度。 例如,如果数据长度为 5,则十六进制字符串假定为: '0500' 如果它是 100,它应该是: '6400' 如果 1050: '1a40' 等等。 在 python 中有没有好的方法来做到这一点? 非常感谢。

使用struct.pack('<H', ...) to pack the int as a 2-byte unsigned short in a string in little-endian format. Then use binascii.hexlify到return字符串的十六进制表示:

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'