python十进制单精度浮点(float)转16位16进制(FP16 hex)

python十进制单精度浮点(float)转16位16进制(FP16 hex)

目的

将神经网络权重存放到FPGA内部需要将可训练参数从float转换到FP16 hex。

Code

# tt.py
import struct
import numpy as np
dec_float = 5.9
# 十进制单精度浮点转16位16进制
hexa = struct.unpack('H',struct.pack('e',dec_float))[0]
hexa = hex(hexa)
hexa = hexa[2:]
print(hexa) # 45e6
# 16位16进制转十进制单精度浮点
y = struct.pack("H",int(hexa,16))
float = np.frombuffer(y, dtype =np.float16)[0]
print(float) # 5.9

测试

测试环境
  • python 3.6.4
测试结果

测试输入5.9转换16位16进制为45e6, 反向转换测试5.9,说明正确
测试结果

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex-Leung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值