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

相关推荐
张张123y20 分钟前
后端第十一课:RAG 落地实战(从 0 到 1 接上私有知识库,并设计一个好用的 RAG)
开发语言·人工智能·python·机器学习·fastapi·rag
golang学习记25 分钟前
Python vs Go:2026年到底该怎么选
java·vscode·python·golang·pycharm·goland
江厌0140 分钟前
移动工作站还是塔式?用三个数判断工位形态,再谈配置
python·移动工作站·塔式工作站·工作站选型·isv认证
川石课堂软件测试1 小时前
涨薪技术|0到1学会性能测试第8课-Analysis分析图
服务器·数据库·python·sql·jmeter·mysql·容器
学编程的小程1 小时前
服务器日志太分散不好查?我用Promtail+Loki+Grafana把采集、查询和分析串起来了
服务器·python·grafana
云水初1 小时前
【项目篇】基于LanGraph的自动处理客服邮件的 Agent汇总
开发语言·笔记·python·学习·fastapi·langgraph
香吧香1 小时前
venv 详解
python
笨笨饿1 小时前
#142_VS Code.map文件插件的用法
git·python·stm32·单片机·嵌入式硬件·物联网·vim
zwd20051 小时前
Manim 竖屏 1080×1920 配置详解:pixel_width、frame_width 怎么写(0.21.0 / 0.22.0 实测)
python·manim·数学动画·短视频制作·manim教程·竖屏视频