首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中将16位十六进制和二进制表示转换为十进制浮点数(反之亦然)?

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

Stack Overflow用户
提问于 2019-05-29 13:04:35
回答 1查看 1.9K关注 0票数 1

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

FP32数的转换有很多种解决方案。但我特别需要FP16表示

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

代码语言:javascript
运行
复制
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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 06:06:13

所以,经过一番研究,我找到了解决方案,我在这里发布给任何可能需要同样答案的人。

代码语言:javascript
运行
复制
import struct
import numpy as np
bin = "0010100011110101"
hex = "28f5"
dec_float = 0.03872680

FP16二进制到十进制浮点数

代码语言:javascript
运行
复制
y = struct.pack("H",int(bin,2))
float = np.frombuffer(y, dtype =np.float16)[0]

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

代码语言:javascript
运行
复制
y = struct.pack("H",int(hex,16))
float = np.frombuffer(y, dtype =np.float16)[0]

十进制浮点数到FP16二进制

代码语言:javascript
运行
复制
binary = struct.unpack('H',struct.pack('e',dec_float))[0]
binary = bin(binary)
binary = binary[2:]
binary = "0"*2 + binary

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

代码语言:javascript
运行
复制
hexa = struct.unpack('H',struct.pack('e',dec_float))[0]
hexa = hex(hexa)
hexa = hexa[2:]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56361357

复制
相关文章

相似问题

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