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

如何在python中将16位十六进制和二进制表示转换为十进制浮点(反之亦然)?,python,struct,binary,formatting,hex,Python,Struct,Binary,Formatting,Hex,我正在研究一个问题,它要求我将浮点数的十六进制和二进制FP16表示形式转换为十进制浮点数。我还需要将十进制浮点数转换为FP16十六进制和二进制表示 有很多FP32数字转换的解决方案。但我特别需要FP16表示法 我已经找到了FP16二进制到十进制浮点的解决方案: a = struct.pack("H",int("0010100011110101",2)) float = np.frombuffer(a, dtype =np.float16)[0] 基本上我想要的是: FP16二进制->十进制浮

我正在研究一个问题,它要求我将浮点数的十六进制和二进制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)

因此,我在做了一点研究后找到了解决方案,我将它发布在这里,供可能需要相同解决方案的人使用。 FP16二进制到十进制浮点 FP16十六进制到十进制浮点 十进制浮点到FP16二进制 十进制浮点到FP16十六进制 所以,我在做了一点研究后找到了解决方案,我把它贴在这里,供可能需要它的人使用。 FP16二进制到十进制浮点 FP16十六进制到十进制浮点 十进制浮点到FP16二进制 十进制浮点到FP16十六进制
import struct
import numpy as np
bin = "0010100011110101"
hex = "28f5"
dec_float = 0.03872680
y = struct.pack("H",int(bin,2))
float = np.frombuffer(y, dtype =np.float16)[0]
y = struct.pack("H",int(hex,16))
float = np.frombuffer(y, dtype =np.float16)[0]
binary = struct.unpack('H',struct.pack('e',dec_float))[0]
binary = bin(binary)
binary = binary[2:]
binary = "0"*2 + binary
hexa = struct.unpack('H',struct.pack('e',dec_float))[0]
hexa = hex(hexa)
hexa = hexa[2:]