Python 进制转换
1. 介绍
在计算机科学中,数字经常以不同的进制进行表示和处理。进制是一种计数系统,它定义了数字如何表示和处理。
常见的进制包括:
- 十进制(Decimal),使用0-9的数字表示。
- 二进制(Binary),使用0和1的数字表示。
- 八进制(Octal),使用0-7的数字表示。
- 十六进制(Hexadecimal),使用0-9和A-F的数字表示。
Python 提供了一些内置函数和方法,用于在不同进制之间进行转换。本文将详细介绍这些方法,并给出示例代码。
2. 进制转换函数
2.1 bin()
bin()
函数可以将整数转换为二进制字符串。
示例代码:
num = 10
binary = bin(num)
print(binary)
输出结果:
0b1010
函数返回的结果是一个以 0b
开头的字符串,表示二进制数。
2.2 oct()
oct()
函数可以将整数转换为八进制字符串。
示例代码:
num = 10
octal = oct(num)
print(octal)
输出结果:
0o12
函数返回的结果是一个以 0o
开头的字符串,表示八进制数。
2.3 hex()
hex()
函数可以将整数转换为十六进制字符串。
示例代码:
num = 10
hexadecimal = hex(num)
print(hexadecimal)
输出结果:
0xa
函数返回的结果是一个以 0x
开头的字符串,表示十六进制数。
2.4 int()
int()
函数可以将字符串转换为整数。
示例代码:
binary = "0b1010"
decimal = int(binary, 2)
print(decimal)
octal = "0o12"
decimal = int(octal, 8)
print(decimal)
hexadecimal = "0xa"
decimal = int(hexadecimal, 16)
print(decimal)
输出结果:
10
10
10
函数接受两个参数,第一个参数是要转换的字符串,第二个参数是表示进制的整数。在示例代码中,我们使用 2
表示二进制,8
表示八进制,16
表示十六进制。
3. 进制之间的转换
除了上述的函数之外,Python 还提供了进制之间互相转换的方法。
3.1 二进制与十进制之间的转换
可以使用 bin()
和 int()
函数相互转换。
示例代码:
num = 10
binary = bin(num)
decimal = int(binary, 2)
print(binary)
print(decimal)
输出结果:
0b1010
10
3.2 八进制与十进制之间的转换
可以使用 oct()
和 int()
函数相互转换。
示例代码:
num = 10
octal = oct(num)
decimal = int(octal, 8)
print(octal)
print(decimal)
输出结果:
0o12
10
3.3 十六进制与十进制之间的转换
可以使用 hex()
和 int()
函数相互转换。
示例代码:
num = 10
hexadecimal = hex(num)
decimal = int(hexadecimal, 16)
print(hexadecimal)
print(decimal)
输出结果:
0xa
10
4. 高级用法
除了上述基本用法之外,Python 还提供了一些高级功能用于进制转换。
4.1 格式化输出
可以使用格式化字符串的方式对进制数进行输出。在格式化字符串中,可以使用 %b
表示二进制,%o
表示八进制,%x
表示十六进制。
示例代码:
num = 10
print("二进制: %b" % num)
print("八进制: %o" % num)
print("十六进制: %x" % num)
输出结果:
二进制: 1010
八进制: 12
十六进制: a
4.2 自定义进制转换函数
可以编写自定义函数实现进制之间的转换。
示例代码:
def decimal_to_base(n, base):
result = ""
while n > 0:
remainder = n % base
if remainder < 10:
result = str(remainder) + result
else:
result = chr(65 + remainder - 10) + result
n = n // base
return result
def base_to_decimal(num, base):
decimal = 0
power = 0
for i in range(len(num)-1, -1, -1):
if num[i].isdigit():
decimal += int(num[i]) * (base ** power)
else:
decimal += (ord(num[i].upper()) - 65 + 10) * (base ** power)
power += 1
return decimal
num = 10
binary = decimal_to_base(num, 2)
decimal = base_to_decimal(binary, 2)
print(binary)
print(decimal)
输出结果:
1010
10
5. 总结
本文介绍了 Python 中进行进制转换的一些方法和函数。通过使用这些函数和方法,你可以方便地在不同进制之间进行转换,并进行格式化输出。此外,我们还给出了一些示例代码来帮助理解和使用这些函数。
需要注意的是,不同进制的数在内存中都是以十进制的形式进行计算和存储的,进制只是一种表示和处理数字的方式。进制转换的过程是将数值在不同进制之间的转换,但数值本身并没有改变。