Python 雙位元組十六進製製到半精度浮點數的轉換

2021-06-14 15:40:35 字數 684 閱讀 7502

最近在處理乙個存檔檔案,用的兩個位元組來儲存浮點數,不能理解,最後找到了這麼一種資料型別:半精度浮點數

python原生不支援這樣的東西,需要外掛程式numpy,方可將雙位元組hex轉為半精度浮點

如果是字串型別的「3c00」這樣的東西,可以用unhexlify,轉換成binary型別,然後丟到frombuffer裡面用

from binascii import unhexlify

import numpy as np

x=unhexlify(bytes("3c00", 'utf-8'))

np.frombuffer(x, np.float16)

結果如下

3.5763e-06

嗯。。等等3c00的二進位制表示不是?

0 01111 0000000000

這個不是應該等於1麼?(參見維基百科鏈結)

好吧,大約是資料儲存的端的問題

>>> np.frombuffer(b'\x3c\x00', np.float16)

>>> 3.5763e-06

>>> np.frombuffer(b'\x00\x3c', np.float16)

>>> 1

用buffer的時候注意順序啊。。。

十六進製制位元組 十六進製制轉二進位制

做專案也將近一年的時間了。從一開始就經常提到 乙個十六進製制位元組 然而一開始就是迷惑的,直到現在。乙個十六進製制位元組,比如 ff。周圍的人經常說這是乙個十六進製制位元組。然後我就想,這不是兩個字元嗎,分別是f 和f,乙個字元是乙個位元組,兩個字元是兩個位元組,怎麼就成乙個十六進製制位元組,就成乙...

4 38 十進位製到十六進製制

description 編寫程式,提示使用者輸入乙個十進位制整數,然後顯示對應的十六進製制值。input 輸入乙個十進位制整數a output 輸出a對應的十六進製制值。輸出結果若包含字母,請使用大寫形式 sample input 300sample output 12chint 對於80 的資料,...

Excel輸入十六進製制數,以及十六進製制運算

網上覆制來複製去的連個靠譜答案都沒有.f k 所以無奈自己探索出來了 單元格 a1文字值 a2進製值 輸入內容 fefe oct2hex hex2oct a29 由於單元格沒有提供進製格式,所以填入的值實際上是文字值,但是轉換函式卻可以把文字值視為進製值拿去轉換 所以我們兩次轉換就能得到真正的進製數...