我有一個10字節(80位)Little Endian浮點值(或float80
)的數組。我如何在python 3中讀取這個值?Python:讀取float80值
包struct
不支持float80
(可能是我不小心閱讀了文檔)。
與包「struct」相同的包array
不支持float80
。
包numpy
支持float128
或float96
類型。這是非常好的,但在float80
的尾部追加\x00
以將其擴展爲float96
或float128
是醜陋的,導入此軟件包需要很長時間。
包支持c_longdouble
。它比numpy快很多倍,但是sizeof(c_longdouble)
是機器相關的,可以少於80位,在float80
的尾部追加\x00
以將其擴展爲c_longdouble
也很難看。
UPDATE 1:測試代碼在我的gist.github。 功能decode_str64
是醜陋的,但它的工作原理。現在我正在尋找正確的方式
你應該改變生產者的格式來產生'float64'或'float96' /'float128' ... – Bakuriu
@Bakuriu,如果我可以的話我會這樣做的:( – kai3341
可能加載爲struct「 HQ「,並可能使用[decimal](https://docs.python.org/3/library/decimal.html)處理[x86_Extended_Precision_Format](https://en.wikipedia.org/wiki/Extended_precision#x86_Extended_Precision_Format)不要丟失精度 – janbrohl