我是 python 新手,从事与嵌入式相关的工作(我的大部分编程经验都是使用 C)。
我正在从串行端口将一个四字节浮点数读入一个字节数组,但它不是正常的小端顺序 DCBA,而是编码为 CDAB。或者它可能被编码为 BADC。(其中 A 是最高有效字节,D 是 LSB)。在字节数组中交换字节的正确方法是什么?
例如,我有
tmp=bytearray(pack("f",3.14))
我希望能够任意排列 tmp 中的字节,然后将其 unpack() 放回浮点数中。
在做任何与嵌入式系统相关的事情时,这样的事情似乎是必不可少的,但要么我在谷歌上搜索错了,要么没有明确的答案(还没有!)。
编辑:当然,我可以这样做:
from struct import *
def modswap(num):
tmp=bytearray(pack("f",num))
res=bytearray()
res.append(tmp[2])
res.append(tmp[3])
res.append(tmp[0])
res.append(tmp[1])
return unpack('f',res)
def main():
print(modswap(3.14))
但必须有更好的方法......
理想情况下,我希望能够随意切片和重新连接,或者如果可能的话,甚至一次更换一个切片。