我正在进行一个项目,其中包括struct
模块及其pack/unpack
函数与python3.6 的使用
我已经参考了很多像这样的文章,并且已经有了基本的想法,但我无法理解我的用例。
例如:
var = struct.pack('i',1)
print(var)
它给出了输出b'x01x00x00x00'
,我可以理解,因为我们已经提到int作为格式,因此输出是4字节。
现在再举一个例子:
var = struct.pack('i', 1156888062)
现在,在这种情况下,为什么输出是b'xfexb5xf4D'
。有人能解释一下吗。
当我打开时
print(struct.unpack('f', var))
为什么输出是(1957.687255859375,)
>>> struct.pack('i', 1156888062)
b'xfexb5xf4D'
这仍然是四个字节,只是其中一个字节是可打印的ASCII字符D
,所以它显示为x44
。这只是一种不同的表现。证明:
>>> len(b'xfexb5xf4D')
4
>>> b'x44'
b'D'
对于最后一位,您需要使用与打包的格式说明符相同的格式说明符unpack
。您要求将相同的四个字节解释为浮点,因此很明显,它会给您不同的结果。将其更改为'i'
,它将按预期工作:
>>> struct.unpack('f', var)
(1957.687255859375,)
>>> struct.unpack('i', var)
(1156888062,)