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

使用f-string格式化带前导零的十六进制数时遇异常问题

解决Python f-string十六进制格式化前导零问题

问题出在宽度计算逻辑的差异:你用#08x时,这里的宽度8是包含0x前缀的总长度;而原来的%08x仅计算数字部分的长度,两者规则不一样。

举个例子,x=0x600000转换成十六进制数字是600000(6位),用#08x时,0x占2位,剩下6位刚好是数字长度,总长度凑够8位,所以不会补前导零,结果就是0x600000,不符合你的预期。

给你两种解决方法:

  • 方法一:手动添加0x前缀,单独给数字部分设置8位宽度(和原%格式化逻辑完全对齐):

    f"<0x{x:08x} 0x{y:08x}>"
    

    这里x:08x会把数字部分补到8位,比如0x600000会被格式化为00600000,加上前缀后就是0x00600000。

  • 方法二:保留#自动加前缀,把总宽度设为10(0x占2位 + 数字部分8位):

    f"<{x:#010x} {y:#010x}>"
    

    #负责自动插入0x,010x指定总长度为10位,数字部分长度不足时用前导零补齐,最终也能得到0x00600000的效果。

测试验证:当x=0x600000、y=0x200000时,两种写法都能输出预期的<0x00600000 0x00200000>。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:55:35