1. 程式人生 > >python 實現16進位制轉定點格式輸出

python 實現16進位制轉定點格式輸出

實現一個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

程式碼並不是最優的,歡迎大家修改意見,提高處理速度