如何在python中将16位十六进制和二进制表示形式转换为十进制浮点数(反之亦然)?

夏尔·波拉

我正在解决一个问题,要求我将浮点数的十六进制和二进制FP16表示形式转换为十进制浮点数。我还需要将十进制浮点数转换为FP16十六进制和二进制表示形式。

FP32数字转换有很多解决方案。但是我特别需要FP16表示形式

我已经找到了将FP16二进制转换为十进制浮点数的解决方案:

a = struct.pack("H",int("0010100011110101",2))

float = np.frombuffer(a, dtype =np.float16)[0]

基本上我想要的是:

FP16二进制->十进制浮点数(0010100011110101-> 0.0387268066)

FP16十六进制->十进制浮点数(28f5-> 0.0387268066)

十进制浮点数-> FP16二进制(0.0387268066-> 0010100011110101)

十进制浮点数-> FP16十六进制(0.0387268066-> 28f5)

夏尔·波拉

因此,经过一番研究,我找到了解决方案,并将其发布在这里,供可能需要的人使用。

import struct
import numpy as np
bin = "0010100011110101"
hex = "28f5"
dec_float = 0.03872680

FP16二进制到十进制浮点数

y = struct.pack("H",int(bin,2))
float = np.frombuffer(y, dtype =np.float16)[0]

FP16十六进制到十进制浮点数

y = struct.pack("H",int(hex,16))
float = np.frombuffer(y, dtype =np.float16)[0]

十进制浮点数到FP16二进制

binary = struct.unpack('H',struct.pack('e',dec_float))[0]
binary = bin(binary)
binary = binary[2:]
binary = "0"*2 + binary

十进制浮点到FP16十六进制

hexa = struct.unpack('H',struct.pack('e',dec_float))[0]
hexa = hex(hexa)
hexa = hexa[2:]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中将字节对象转换为十进制或二进制表示形式?

在Javascript中将64位十六进制转换为十进制浮点数

在Elixir中将二进制字符串转换为十六进制,反之亦然

Python如何将浮点数十六进制转换为十进制

将数字(也可以是浮点数)转换为十六进制,反之亦然

十六进制转换为二进制和十进制转换器

如何从十六进制转换为十进制以及从十进制转换为二进制

将十进制浮点数转换为二进制并返回

将十进制浮点数转换为二进制

如何将十六进制切片转换为带二进制补码的浮点数

如何在Go中打印浮点数的二进制表示形式?

C#浮点数到二进制字符串,反之亦然

如何使用PHP将工作日转换为二进制表示,反之亦然

将带符号的二进制转换为十进制,八进制和十六进制

如何在C中将字符串转换为十六进制,反之亦然?

如何在python中将十进制转换为二进制值?

将十进制值转换为二进制,十六进制和八进制的单个函数不会转换为二进制

如何在Ruby中将64位二进制字符串转换为双精度浮点数?

如何在python中将十六进制值转换为浮点数

在Java意外输出中将二进制/十进制小数转换为十六进制

在Swift中在十进制,二进制和十六进制之间转换

如何使用二进制补码手动将十六进制转换为十进制

在Python中将32位二进制数字转换为十进制

在python中将32位二进制转换为十进制

在Python中将二进制表示形式转换为带符号的64位整数

如何在Matlab中将十进制转换为IEEE双精度浮点二进制?

Java - 十进制到二进制(反之亦然)使用按位运算符

如何从Java中的二进制表示形式获取浮点数?

如何将带符号的十进制转换为十六进制的24位二进制补码带符号数