首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python将16位十六进制值转换为FP16?

用Python将16位十六进制值转换为FP16?
EN

Stack Overflow用户
提问于 2022-08-25 00:14:04
回答 1查看 154关注 0票数 0

我试图在python中编写一个基于FP16的基本计算器,以帮助我调试一些硬件。似乎找不到如何将16b十六进制值转换为浮点值,我可以在代码中使用这些值来计算。我在网上看到了许多对numpy的引用,但我认为float16构造函数需要一个类似于float16("1.2345")的字符串。我想我要找的是类似于float16(“0xabc d”)的东西。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-25 00:43:18

numpy.float16确实是一种有符号浮点格式,具有5位指数和10位尾数.

要获得示例的结果:

代码语言:javascript
运行
复制
import numpy as np

np.frombuffer(b'\xab\xcd', dtype=np.float16, count=1)

结果:

代码语言:javascript
运行
复制
array([-22.67], dtype=float16)

或者,演示如何对另一个示例1.2345进行编码和解码。

代码语言:javascript
运行
复制
import numpy as np

a = np.array([1.2345], numpy.float16)
b = a.tobytes()
print(b)
c = np.frombuffer(b, dtype=np.float16, count=1)
print(c)

结果:

代码语言:javascript
运行
复制
b'\xf0<'
[1.234]

如果您确实需要将所提供的字符串转换为FP16:

代码语言:javascript
运行
复制
import numpy as np

s = "0xabcd"
b = int("0xabcd", base=16).to_bytes(2, 'big')
print(b)
c = np.frombuffer(b, dtype=np.float16, count=1)
print(c)

输出:

代码语言:javascript
运行
复制
b'\xab\xcd'
[-22.67]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73480640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档