最近在處理乙個存檔檔案,用的兩個位元組來儲存浮點數,不能理解,最後找到了這麼一種資料型別:半精度浮點數
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 由於單元格沒有提供進製格式,所以填入的值實際上是文字值,但是轉換函式卻可以把文字值視為進製值拿去轉換 所以我們兩次轉換就能得到真正的進製數...