當您試圖將數據轉換爲二進制格式或從二進制格式轉換數據時,struct
模塊非常有用。但是,最近我遇到了一個使用the binary16 floating point format的文件格式規範。我瀏覽了Python文檔,但找不到任何可以轉換爲和從中轉換的東西。將這些數據轉換爲/從Python浮動的最佳方式是什麼?Python中的binary16
5
A
回答
4
你可以做到這一點大致是你會用C做的 - 即,我想,大致是這樣的...:
def tofloat(b16):
sign = -1 if b16 & 0x8000 else +1
expo = (b16 & 0x7C00) >> 10
prec = b16 & 0x03FF
if expo == 0:
return sign * (2.0 ** -24) * prec
elif expo == 0x1F:
return sign * float('inf')
prec |= 0x0400
return sign * (2.0 ** (expo - 25)) * prec
1
一個快速的谷歌搜索出現了http://packages.python.org/bigfloat/,它說它有一個處理binary16
浮點數的上下文。不過,我自己並不熟悉這個軟件包,所以我不能告訴你任何有關如何使用它的知識(至少,除了你可以在文檔中閱讀你自己)。
2
This guy's blog post在兩者和python中給出了一個實現。他使用struct
模塊,然後手動解碼。這並不是一件複雜的轉換。
相關問題
- 1. C#中「half」(binary16)的類型是什麼?
- 2. python中的Python
- 3. Python中的Python調試+ PyDev
- 4. 在python中搜索樹中的值python
- 5. python中的FileChooserDialog
- 6. Python中的LinkedList
- 7. Python中的Timedeltas
- 8. Python中的MIMEMultipart()
- 9. python中的WeakValueDictionary
- 10. Python中的Webbrowser
- 11. Python中的MySQL
- 12. Python中的Speex
- 13. Python中的類
- 14. Python中的call_user_func_array
- 15. python中的Bigram
- 16. Python中的Tabbing?
- 17. Python中的Grails
- 18. 的Python:中itertools.chain.from_iterable
- 19. python中的array_sum
- 20. python中的= [[],] * 10
- 21. Python中的GUI
- 22. Python中的sqlite3
- 23. Python中的InnerText
- 24. Python中的UnboundLocalError
- 25. Python中的REDIS
- 26. Python中的ST_Distance_Sphere()?
- 27. python中的Pragma
- 28. Python中的iteritems
- 29. OpenCV的python中
- 30. Python中的SCons