簡體   English   中英

在 python 中打包和解包浮點值

[英]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])))

例如, 124b'|'表示 . 在您的情況下, b'\xe0LC|\xf6l\xd7A'bytes([224, 76, 67, 124, 246, 108, 215, 65])的表示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM