使用Python的struct模块翻转字节

ber*_*tch 0 python struct endianness flip

我想从大字符串翻转到这个字符串:

\x00\x40

这样:

\x40\x00

我想使用的正确函数是struct.pack,但我找不到让它正常工作的方法.非常感谢小帮助!

谢谢

Eli*_*sky 6

您没有显示整个代码,因此最简单的解决方案是:

data = data[1] + data[0]
Run Code Online (Sandbox Code Playgroud)

如果你坚持使用struct:

>>> from struct import pack, unpack
>>> unpack('<H', '\x12\x13')
(4882,)
>>> pack('>H', *unpack('<H', '\x12\x13'))
'\x13\x12'
Run Code Online (Sandbox Code Playgroud)

首先将字符串解压缩为little-endian unsigned short,然后将其打包为big-endian unsigned short.当然,你可以反过来使用它.在BE和LE之间进行转换时,转换的方式无关紧要 - 转换功能是双向的.


小智 5

data[::-1] 适用于任意数量的字节.