我正在尝试将big-endian 2字节字符串转换为数字端口号。我已经有了一些代码,但我不知道它是否正确:
from struct import unpack
def unpack_port(big_endian-port):
return unpack("!H", big_endian-port)[0]
端口(使用Python repr())是\ x1a \ xe1,我从该函数中获得了6881。
这是对的吗?
答案 0 :(得分:3)
是的,'!'
是表示'网络字节顺序'的字符,而'H'
表示'16位无符号整数',因此您的代码是正确的。 6881通常是Bittorrent端口。
在这种情况下,我认为'!'
是正确的字符。由于它是端口号,我希望您的数据来自网络。但是,如果您因某些其他原因知道您的数据是大端的,'>'
可能更合适。他们的意思完全相同,而且永远都是。更多的是评论您的代码以表明意图而不是任何语义差异。