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

Python实现整数多进制转换并按指定格式输出的技术问询

解决Python多进制格式化输出的问题

我来帮你搞定这个整数多进制格式化输出的需求!给定整数n,我们要为1到n之间的每个整数i,按顺序输出十进制(Decimal)、八进制(Octal)、大写十六进制(Hexadecimal)、二进制(Binary),四个值要放在同一行,而且每个值都得根据n的二进制表示的宽度来补空格对齐。

先看看你原来的代码,还在手动计算八进制的余数拼接,其实Python有内置的格式化方法,能轻松搞定转换和对齐,不用这么麻烦!

完整解决方案代码

def print_formatted(number):
    # 计算对齐所需的宽度:取n的二进制表示的位数(去掉bin()返回的'0b'前缀)
    width = len(bin(number)) - 2
    for i in range(1, number + 1):
        # 分别格式化四个进制,按宽度自动补空格对齐
        decimal = f"{i:{width}d}"
        octal = f"{i:{width}o}"
        hex_upper = f"{i:{width}X}"
        binary = f"{i:{width}b}"
        # 打印在同一行,用空格分隔
        print(f"{decimal} {octal} {hex_upper} {binary}")

代码关键点解释

  • 宽度计算:len(bin(number)) - 2是核心,因为bin(n)返回的字符串是'0bxxxx'格式,减去前缀的2个字符,就能得到n的二进制实际位数,这个位数就是我们需要的统一宽度。比如n=10,二进制是1010,长度是4,所以每个输出值都占4位,不够的前面补空格。
  • 格式化字符串用法:
    • {i:{width}d}:把整数i格式化为十进制,占width位,不足补空格
    • {i:{width}o}:格式化为八进制
    • {i:{width}X}:格式化为大写十六进制(小写用x)
    • {i:{width}b}:格式化为二进制

测试示例

调用print_formatted(10),输出会是这样整齐对齐的结果:

1    1    1    1
   2    2    2   10
   3    3    3   11
   4    4    4  100
   5    5    5  101
   6    6    6  110
   7    7    7  111
   8   10    8 1000
   9   11    9 1001
  10   12    A 1010

这样是不是比手动计算余数拼接字符串方便多了?Python的格式化字符串真的很省心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:20:22