python 中的进制

进制是数值的表示方式,Python 原生支持二进制、八进制、十进制、十六进制,并提供了丰富的进制转换功能。

一、进制表示方式

1. 四种进制的字面量

复制代码
# 十进制(默认)
dec = 42
print(dec)        # 42

# 二进制:0b 或 0B 前缀
bin_num = 0b101010
print(bin_num)    # 42

# 八进制:0o 或 0O 前缀
oct_num = 0o52
print(oct_num)    # 42

# 十六进制:0x 或 0X 前缀
hex_num = 0x2A
print(hex_num)    # 42

2. 数字分隔符(Python 3.6+)

复制代码
# 使用下划线提高可读性
bin_num = 0b1010_1010_1111_0000
oct_num = 0o7_6_5_4
dec_num = 1_000_000_000
hex_num = 0xFF_00_FF_00

print(bin_num)    # 43632
print(dec_num)    # 1000000000

二、进制转换函数

1. 其他进制 → 十进制

复制代码
# 使用 int() 函数
print(int('101010', 2))      # 42(二进制 → 十进制)
print(int('52', 8))          # 42(八进制 → 十进制)
print(int('2A', 16))         # 42(十六进制 → 十进制)
print(int('FF', 16))         # 255

# 数字字符串默认按十进制处理
print(int('42'))             # 42(十进制)

2. 十进制 → 其他进制

复制代码
num = 42

# 二进制
print(bin(num))              # 0b101010
print(format(num, 'b'))      # 101010(无前缀)
print(f"{num:b}")            # 101010(f-string)

# 八进制
print(oct(num))              # 0o52
print(format(num, 'o'))      # 52
print(f"{num:o}")            # 52

# 十六进制
print(hex(num))              # 0x2a
print(format(num, 'x'))      # 2a(小写)
print(format(num, 'X'))      # 2A(大写)
print(f"{num:x}")            # 2a

三、进制格式化输出

1. 使用 format() 函数

复制代码
num = 255

# 二进制
print(format(num, 'b'))        # 11111111
print(format(num, '08b'))      # 11111111(宽度8,补零)
print(format(num, '#b'))       # 0b11111111(带前缀)

# 八进制
print(format(num, 'o'))        # 377
print(format(num, '#o'))       # 0o377

# 十六进制
print(format(num, 'x'))        # ff(小写)
print(format(num, 'X'))        # FF(大写)
print(format(num, '#x'))       # 0xff
print(format(num, '04x'))      # 00ff(宽度4,补零)

2. 使用 f-string(推荐)

复制代码
num = 255

print(f"{num:b}")      # 11111111
print(f"{num:#b}")     # 0b11111111
print(f"{num:08b}")    # 11111111(补零到8位)
print(f"{num:o}")      # 377
print(f"{num:x}")      # ff
print(f"{num:X}")      # FF
print(f"{num:#x}")     # 0xff

# 动态宽度
width = 8
print(f"{num:0{width}b}")  # 11111111

3. 格式化选项对比

格式 二进制 八进制 十六进制
无前缀 {:b} {:o} {:x}
小写前缀 {:#b} {:#o} {:#x}
大写 {:B} {:O} {:X}
大写前缀 {:#B} {:#O} {:#X}
补零 {:08b} {:04o} {:04x}

最后来一个汇总表把:

进制 前缀 转换函数 格式化
二进制 0b/0B bin() {:b}
八进制 0o/0O oct() {:o}
十进制 int() {:d}
十六进制 0x/0X hex() {:x}/{:X}

备注

  1. Python 原生支持四种进制字面量

  2. int() 函数可将各进制字符串转为十进制

  3. bin()oct()hex() 将十进制转为对应进制(带前缀)

  4. format() 和 f-string 可控制进制格式(可带/不带前缀)

  5. 位运算天然支持二进制操作

  6. 数字分隔符 _ 可提高大数字可读性

相关推荐
大模型码小白9 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
麻雀飞吧9 小时前
最新量化学习路径,交易认知和技术实现要并行
人工智能·python
C^h13 小时前
python函数学习
人工智能·python·机器学习
Fanta丶13 小时前
4.Python set()集合、dict(字典、映射)、 数据容器的通用功能
python
决战灬13 小时前
langgraph之interrupt(理论篇)
人工智能·python·agent
兜客互动14 小时前
2026年AI关键词拓展挖掘软件,高效助力内容创作精准获流
人工智能·python
weixin_5386019714 小时前
智能体测开Day30pytest测试框架
python
MC皮蛋侠客14 小时前
uv 系列(七):CI/CD、Docker 与私有索引——生产级交付
python·ci/cd·docker·uv
邪神与厨二病14 小时前
牛客周赛 Round 153
python·算法
yaoxin52112314 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python