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

有符号浮点数转1位符号+15位整数+16位小数格式十六进制求助

实现方案

你要实现的是Q16.16有符号定点数转32位十六进制的功能,总位宽32位对应1位符号位、15位整数位、16位小数位,负数按32位补码存储即可实现需求。


优化后代码

def convert(num):
    # 先取绝对值计算原始定点值
    abs_num = abs(num)
    int_part = int(abs_num)
    fract_part = abs_num - int_part
    # 整数部分取低16位,格式化为16位二进制
    int_bin = f"{int_part & 0xffff:016b}"
    # 计算16位小数二进制
    fract_bin = ""
    for _ in range(16):
        fract_part *= 2
        bit = int(fract_part)
        fract_bin += str(bit)
        fract_part -= bit
    # 得到无符号32位绝对值结果
    val = int(int_bin + fract_bin, 2)
    # 负数处理:转换为32位补码
    if num < 0:
        val = 0x100000000 - val
    # 返回8位小写十六进制,自动补前导0
    return f"{val:08x}"

测试验证

# 测试示例匹配度
print(convert(-0.6543861))    # 输出 ffff587a
print(convert(-12.897631))    # 输出 fff31a35
print(convert(107.8674316))   # 输出 006bde10
print(convert(59.8132324))    # 输出 003bd030

改动说明

  • 新增符号判断逻辑,负数直接对32位无符号值取补码,完全匹配格式定义
  • 输出固定为8位十六进制,自动补前导0,和示例输出格式完全一致
  • 保留了你原有核心转换逻辑,改动量极小,符合简洁实现的要求

内容的提问来源于stack exchange,提问作者Md Mizanur Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:48:03