为什么当我尝试打包float
对象时python为什么返回“奇数值”?例如:
>>> import struct,time
>>> struct.pack('d', time.time())
b'\xe0LC|\xf6l\xd7A'
>>> struct.unpack('d', b'\xe0LC|\xf6l\xd7A')
(1572067825.051567,)
为什么将值解压缩为元组而不是浮点型?然后,为什么它使用诸如LC
,|
和l
之类的值-我认为它将以十六进制形式打包项目?
根据格式字符串格式从缓冲区缓冲区中解压缩(大概由pack(format,...)打包)。您可以通过以下方式查看所有可能字节的表示形式:结果是一个元组,即使它仅包含一项。缓冲区大小(以字节为单位)必须与格式要求的大小匹配,如calcsize()所反映。
for i in range(256):
print("{} : {}".format(i, bytes([i])))
例如,124
由b'|'
表示。在您的情况下,b'\xe0LC|\xf6l\xd7A'
是bytes([224, 76, 67, 124, 246, 108, 215, 65])
的表示。