我想将这个字符串从大到小翻转:
\x00\x40
让它像这样:
\x40\x00
我想使用的正确函数是struct.pack,但我找不到让它正常工作的方法。 非常感谢小帮助!
由于
答案 0 :(得分:6)
您没有显示整个代码,因此最简单的解决方案是:
data = data[1] + data[0]
如果您坚持使用struct
:
>>> from struct import pack, unpack
>>> unpack('<H', '\x12\x13')
(4882,)
>>> pack('>H', *unpack('<H', '\x12\x13'))
'\x13\x12'
首先将字符串解压缩为little-endian unsigned short,然后将其打包为big-endian unsigned short。当然,你可以反过来使用它。在BE和LE之间进行转换时,转换的方式无关紧要 - 转换功能是双向的。
答案 1 :(得分:5)
data[::-1]
适用于任意数量的字节。
答案 2 :(得分:0)
little_endian = big_endian[1] + big_endian[0]
答案 3 :(得分:0)
我可以想象这里真正想要做的是将输入数据从大端(或网络)字节顺序转换为主机字节顺序(无论可能是什么)。
>>> from struct import unpack
>>> result = unpack('>H', '\x00\x40')
这将是一种比仅交换更便携的方法,当代码被移动到根本不需要交换的大端机器时,这种方法肯定会失败。