我想uint16
用 Python 将一组二进制数据解压缩为数据。
互联网上到处都是使用struct.unpack
但只有处理大小为 4 的二进制数组的示例。
这些示例中的大多数如下(B
是来自文件的二进制数组)
U = struct.unpack("HH",B[0:4]);
所以我试图解压一个大小为 6 的数组:
U = struct.unpack("HHH",B[0:6]);
有用。
但是如果我想解压一个大小为L
( L
is pair) 的数组怎么办?我试过了:
U = struct.unpack("H"*(L/2),B[0:L]);
但它不起作用,提示器给我一个错误(L=512
例如):
struct.error: unpack requires a string argument of length 512
这条消息很奇怪,因为如果我想将二进制数组解包到uint16
,我需要一个"HHH...HHH"
该数组一半大小的字符串......
如果有人可以为我提供一些帮助,我将不胜感激。
我进步了一点......事实上,我尝试过:
U = struct.unpack("H"*8,B[0:8]);
有用。
U = struct.unpack("H"*10,B[0:10]);
有用。
U = struct.unpack("H"*222,B[0:444]);
它仍然有效
U = struct.unpack("H"*223,B[0:446]);
它不起作用!它永远不会适用于大于 446 的尺寸
希望它会帮助任何人回答我。
@MarkRansom 我检查了 len(B) ,实际上长度是 444。我非常确定 B 是一个大小为 512 的数组,因为 B 来自 : B = f.read(512)
其中 F 是一个 8000 字节大小的文件。所以 read() 有问题...感谢您的回答!但是,如果有人帮助解压大小为 L 的二进制数组,我将不胜感激