You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将定点数的十六进制表示转换为十进制表示?

十六进制Q1.30定点数转十进制的解决方法

方法一:使用numfi库正确取值

你之前的代码其实已经正确创建了numfi对象,只是没有获取对应的十进制数值。通过numfi对象的.value属性就能拿到转换后的十进制浮点数:

import numfi
y = numfi(0x226B50B1, 1, 32, 30)
print(y.value)  # 输出约 0.5378

方法二:手动计算(无需第三方库)

Q1.30格式的定点数,本质是把十进制数放大2^30倍后取整的结果。反向转换时,只需将十六进制对应的整数除以2^30即可:

# 十六进制字符串转整数
hex_value = "226B50B1"
integer_val = int(hex_value, 16)
# 除以2^30得到十进制值
decimal_val = integer_val / (2 ** 30)
print(decimal_val)  # 输出约 0.5378

如果是负数的十六进制(最高位为1),需要先转成补码对应的有符号整数再计算:

hex_neg = "C26B50B1"
integer_neg = int(hex_neg, 16)
# 转换为32位有符号整数
signed_int = integer_neg - (1 << 32) if integer_neg >= (1 << 31) else integer_neg
decimal_neg = signed_int / (2 ** 30)

方法三:使用numpy库处理

借助numpy的整数类型处理有符号转换,再计算十进制值:

import numpy as np
hex_val = 0x226B50B1
# 转换为32位有符号整数
signed_int = np.int32(hex_val)
decimal_val = signed_int / (2 ** 30)
print(decimal_val)  # 输出约 0.5378

内容的提问来源于stack exchange,提问作者MW2023

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:25:22