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. 数字分隔符 _ 可提高大数字可读性

相关推荐
麻雀飞吧30 分钟前
期货多合约策略目标持仓怎么更新才不乱
python·区块链
Cthy_hy41 分钟前
拓扑排序超详解:原理 + Kahn 贪心算法
python·算法·贪心算法
LSssT.1 小时前
【01】Python 机器学习
开发语言·python
为爱停留1 小时前
给智能体装上「刹车」:中断(Interrupts)与人工审批全解析
python
l1t1 小时前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程39-40
开发语言·python
曾阿伦2 小时前
Python 搭建简易HTTP服务
开发语言·python·http
MIUMIUKK2 小时前
从语法层面,看懂 Python 的特殊处
java·开发语言·python
着迷不白2 小时前
第一部分:认识python
开发语言·python
hujinyuan201602 小时前
2026年3月 中国电子学会青少年软件编程(Python)三级考试试卷 真题及答案
java·python·算法
开开心心就好2 小时前
支持多显示器的Windows高效分屏工具
运维·python·科技·游戏·计算机外设·ocr·powerpoint