上一篇
Python整数进制转换教程 - 从二进制到十六进制转换指南
- Python
- 2025-08-01
- 646
Python整数进制转换教程
全面掌握二进制、八进制、十进制和十六进制之间的相互转换
进制系统简介
在计算机科学中,常用的进制系统包括:
- 二进制 (Base-2) - 由0和1组成,计算机底层使用
- 八进制 (Base-8) - 由0-7组成,在Unix系统中使用
- 十进制 (Base-10) - 由0-9组成,人类日常使用的数字系统
- 十六进制 (Base-16) - 由0-9和A-F组成,用于表示内存地址和颜色值
Python内置进制转换函数
十进制转二进制 - bin()
# 十进制转二进制 num = 42 binary = bin(num) print(binary) # 输出: 0b101010 # 去掉前缀 print(bin(num)[2:]) # 输出: 101010
十进制转八进制 - oct()
# 十进制转八进制 num = 42 octal = oct(num) print(octal) # 输出: 0o52 # 去掉前缀 print(oct(num)[2:]) # 输出: 52
十进制转十六进制 - hex()
# 十进制转十六进制 num = 42 hexadecimal = hex(num) print(hexadecimal) # 输出: 0x2a # 去掉前缀 print(hex(num)[2:]) # 输出: 2a
其他进制转十进制 - int()
# 二进制转十进制 binary_str = "101010" decimal = int(binary_str, 2) print(decimal) # 输出: 42 # 八进制转十进制 octal_str = "52" decimal = int(octal_str, 8) print(decimal) # 输出: 42 # 十六进制转十进制 hex_str = "2a" decimal = int(hex_str, 16) print(decimal) # 输出: 42
任意进制之间的转换
Python可以通过十进制作为中间步骤实现任意进制之间的转换:
二进制转十六进制
# 二进制转十六进制 binary_str = "101010" decimal_num = int(binary_str, 2) hex_num = hex(decimal_num) print(hex_num) # 输出: 0x2a
十六进制转二进制
# 十六进制转二进制 hex_str = "2a" decimal_num = int(hex_str, 16) binary_num = bin(decimal_num) print(binary_num) # 输出: 0b101010
八进制转十六进制
# 八进制转十六进制 octal_str = "52" decimal_num = int(octal_str, 8) hex_num = hex(decimal_num) print(hex_num) # 输出: 0x2a
使用format()函数进行格式化输出
format()函数提供了一种更灵活的进制转换方法:
num = 255 # 格式化为二进制(不带前缀) print(format(num, 'b')) # 输出: 11111111 # 格式化为八进制(不带前缀) print(format(num, 'o')) # 输出: 377 # 格式化为十六进制(不带前缀) print(format(num, 'x')) # 输出: ff # 格式化为十六进制(大写) print(format(num, 'X')) # 输出: FF # 带前缀的格式化 print(format(num, '#b')) # 输出: 0b11111111 print(format(num, '#o')) # 输出: 0o377 print(format(num, '#x')) # 输出: 0xff print(format(num, '#X')) # 输出: 0XFF
实际应用场景
1. 网络编程中的IP地址处理
# 将IP地址转换为32位二进制 ip = "192.168.1.1" binary_ip = ''.join([bin(int(x)+256)[3:] for x in ip.split('.')]) print(binary_ip) # 输出: 11000000101010000000000100000001
2. 颜色值转换
# 十六进制颜色值转RGB hex_color = "#FF5733" r = int(hex_color[1:3], 16) g = int(hex_color[3:5], 16) b = int(hex_color[5:7], 16) print(f"RGB: ({r}, {g}, {b})") # 输出: RGB: (255, 87, 51)
3. 权限管理系统(Unix风格)
# 八进制权限转字符串表示 def permission_string(octal_perm): perm_str = "" perm_map = {'0': '---', '1': '--x', '2': '-w-', '3': '-wx', '4': 'r--', '5': 'r-x', '6': 'rw-', '7': 'rwx'} for digit in str(octal_perm): perm_str += perm_map[digit] return perm_str print(permission_string(755)) # 输出: rwxr-xr-x print(permission_string(644)) # 输出: rw-r--r--
进制转换速查表
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
8 | 1000 | 10 | 8 |
10 | 1010 | 12 | A |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
255 | 11111111 | 377 | FF |
总结
- Python提供了内置函数
bin()
,oct()
,hex()
用于十进制转其他进制 int()
函数可以将字符串从任意进制转换为十进制- 使用
format()
函数可以更灵活地控制进制转换的输出格式 - 不同进制转换的结果通常包含前缀(0b, 0o, 0x),可以使用切片操作去除
- 进制转换在IP地址处理、颜色值转换、权限管理等场景有广泛应用
本文由WuHong于2025-08-01发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257042.html
发表评论