我试图在python中编写一个基于FP16的基本计算器,以帮助我调试一些硬件。似乎找不到如何将16b十六进制值转换为浮点值,我可以在代码中使用这些值来计算。我在网上看到了许多对numpy的引用,但我认为float16构造函数需要一个类似于float16("1.2345")的字符串。我想我要找的是类似于float16(“0xabc d”)的东西。
谢谢!
发布于 2022-08-25 00:43:18
numpy.float16
确实是一种有符号浮点格式,具有5位指数和10位尾数.
要获得示例的结果:
import numpy as np
np.frombuffer(b'\xab\xcd', dtype=np.float16, count=1)
结果:
array([-22.67], dtype=float16)
或者,演示如何对另一个示例1.2345
进行编码和解码。
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)
结果:
b'\xf0<'
[1.234]
如果您确实需要将所提供的字符串转换为FP16:
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)
输出:
b'\xab\xcd'
[-22.67]
https://stackoverflow.com/questions/73480640
复制相似问题