[英]Python struct.unpack byte length issues
我有以下代码:
msg = b'0,[\x00\x01\x86\xec\x96N'
print(struct.unpack("<"+"I",msg))
但是每次我尝试这样做时,它都会说
struct.error: unpack 需要 4 个字节的缓冲区
我试图做的是以下
times = int(len(msg)/4)
struct.unpack("<"+"I" * times,msg)
但它并不总是有效,我认为在奇数上,我怎样才能得到正确的大小,所以我不会遇到这些问题?
struct.unpack
要求消耗的缓冲区长度正好是格式的大小。 [1]
改用struct.unpack_from
,它要求消耗的缓冲区长度至少是格式的大小。 [2]
>>> msg = b'0,[\x00\x01\x86\xec\x96N'
>>> import struct
>>> print(struct.unpack("<"+"I", msg))
Traceback (most recent call last):
File "<input>", line 1, in <module>
struct.error: unpack requires a buffer of 4 bytes
>>> print(struct.unpack_from("<"+"I", msg))
(5975088,)
unpack_from
将忽略额外的字节
[1] https://docs.python.org/3/library/struct.html#struct.unpack
[2] https://docs.python.org/3/library/struct.html#struct.unpack_from
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.