了解 Python 的结构包/解包函数



我正在进行一个项目,其中包括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,)    

最新更新