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  : xiaotai-2666@163.com

"""
def fix2float(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],2)
        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

代码并不是最优的,欢迎大家修改意见,提高处理速度

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值