python - 如何切换二进制数据的字节顺序

标签 python struct pack

我有一个正在读取的二进制文件,其中一些 2 字节值以“反向”字节顺序(小端字节序?)存储,例如。

1D 00 13 00 27  00 3B 00 45  00 31 00 4F

创建这些值的原始程序在内部将它们存储为短裤。这些值应对应于:29、19、39、59、69、49、79。我正在尝试使用 python 2.6.5 读取这些值(尽管这可能会在更旧的系统上运行,例如 2.3 和 2.4) .

我试过

val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)

当然,所有的值都是错误的:

7427
4864
9984
15104
17664
12544
20224

在查看了 struct 的文档之后,我认为我可以使用类似的东西

val1, ... = struct.unpack("!h !h ...

但是在测试的时候,我只得到了

struct.error: bad char in struct format

如何以正确的字节顺序解压缩这些值?我是否卡住了分别读取两个字节然后在 python 代码中重新组合它们?

最佳答案

字节顺序在格式字符串的开头用单个字符指定。

values = struct.unpack('!7h', data)

关于python - 如何切换二进制数据的字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983684/

相关文章:

python - 从变量列表中提取变量名称

python脚本按行连接值并删除相同的值

python - 小部件从 QTreeview 中消失

C 编程为什么我的代码不能使用嵌套结构数组打印正确的输出?

php - 需要 "pack"的帮助,用于 perl 和 php

python - 删除连续的 2 行

c++ - 为什么这个结构没有在函数中设置

c - 在调试中得到不同的结果

git - 如何修复 Git 中的 'index-pack died of signal 15' 错误?

c# - 图像未绑定(bind)到资源。如何使用 Relativesource 进行绑定(bind)