python 實現16進位制轉定點格式輸出
阿新 • • 發佈:2018-12-10
實現一個16進位制字串轉定點輸出顯示的函式
在做FPGA資料處理時,經常會遇到定點數,模擬生成的定點資料需要轉換成浮點取顯示.所以搞瞭如下函式來實現這個轉換
輸入的引數
v 輸入16進位制字串 s 是否是有符號輸出 w 輸入值位寬 f 小數位寬
返回值
返回定點代表的數值,如呼叫 >>>print(hex2fixpoint(‘F1’,1,8,4)) -0.9375
##程式碼如下
"""
Created on 2018.09.20.12
實現輸入16進位制資料轉成定點顯示值
@author: peter
@emil : [email protected]
"""
def hex2fixpoint (v,s=True,w=24,f=15):
#v 輸入16進位制字串 example 'f1'
#s 是否是有符號輸出 example 1
#w 輸入值位寬 example 8
#f 小數位寬 example 4
#return -0.9375
din = int(v,16)
max_num= 2**w
if( s and din >= max_num/2 ):
x=din^(max_num-1)
v_bin = '{0:0{1}b}'.format (x+1,w)
fraction = int(v_bin[w-f:],2)/float(2**f)
intdata = int(v_bin[:w-f])
x=-(fraction+intdata)
else:
v_bin = '{0:0{1}b}'.format(din,w)
fraction = int(v_bin[w-f:],2)/float(2**f)
intdata = int(v_bin[:w-f],2)
x=fraction+intdata
return x
程式碼並不是最優的,歡迎大家修改意見,提高處理速度