[英]Packing and unpacking float values in python
當我嘗試打包float
object 時,為什么 python 返回“奇數值”? 例如:
>>> import struct,time
>>> struct.pack('d', time.time())
b'\xe0LC|\xf6l\xd7A'
>>> struct.unpack('d', b'\xe0LC|\xf6l\xd7A')
(1572067825.051567,)
為什么它將值解壓縮為元組而不是浮點數? 然后,為什么它使用諸如LC
和|
之類的值? 和l
- 我認為它會以十六進制包裝物品?
unpack 的文檔明確指出結果是一個元組:
根據格式字符串格式從緩沖緩沖區中解包(大概是由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])
的表示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.