进制转换 前缀解释
在不同的编程场景中,我们常常需要进行不同进制之间的转换。为了解决这个问题,Python提供了不同的前缀来标识不同的进制类型。
-
0x 开头的是 十六进制(Hexadecimal),即以16为基数的数制。十六进制中的每个数字代表4位二进制数,表示范围从0到15。数字0-9表示十进制数字0到9,而字母a-f表示十进制数字10到15。例如,十六进制的
a表示十进制的10,f表示十进制的15。 -
0b 开头的是 二进制(Binary),即以2为基数的数制。二进制数字只由0和1组成,常用于计算机系统中表示各种信息。二进制数的每一位代表2的幂,例如,二进制数
101表示十进制数5。 -
0o 开头的是 八进制(Octal),即以8为基数的数制。八进制数字由0到7的数字组成,每个数字代表3位二进制数。在计算机编程中,八进制较少使用,但在某些特殊情况下仍然有其用途。
转十进制使用 int(字符串,进制数)
为了将其他进制的数值转换为十进制数,我们可以使用Python中的int()函数。int()函数接受两个参数,第一个参数是待转换的字符串,第二个参数是进制数,指定了该字符串的进制类型。
十六进制转十进制
十六进制转十进制非常简单,我们只需要在int()函数中指定进制为16即可。
# 十六进制转十进制
hex_num = "0xa1"
decimal_num = int(hex_num, 16)
print(decimal_num) # 输出:161
在这个例子中,0xa1表示十六进制数,转换后得到的十进制值是161。
八进制转十进制
八进制转十进制的过程与十六进制类似,只需指定进制为8即可。
python
复制代码
# 八进制转十进制
Octal_num = "12"
decimal_num = int(Octal_num, 8)
print(decimal_num) # 输出:10
在此,12表示八进制数,转换后得到的十进制值是10。
注意事项:
new_Octal_num = "0o12"
new_decimal_num = int(new_Octal_num) # 这样是错误的,因为`int()`函数需要明确指定进制
print(new_decimal_num)
以上代码错误的原因是int()函数没有指定进制,导致它无法正确处理前缀0o。要解决这个问题,我们需要明确指定进制为8
二进制转十进制
同样,二进制转十进制也使用int()函数,指定进制为2即可。
# 二进制转十进制
binary_num = "10"
decimal_num = int(binary_num, 2)
print(decimal_num) # 输出:2
在这个例子中,二进制数10转换后是十进制的2。
十进制转特殊进制 bin() oct() hex()
Python提供了内置函数bin()、oct()和hex()来将十进制数转换为二进制、八进制和十六进制字符串。
bin()函数用于将十进制数转换为二进制字符串。oct()函数用于将十进制数转换为八进制字符串。hex()函数用于将十进制数转换为十六进制字符串。
示例:
先将二进制字符串转换为十进制数,然后再将十进制数转换为十六进制字符串。
# 将二进制转为十六进制
bin_num = "0b11111" # 二进制数
decimal_num = int(bin_num, 2) # 转为十进制
hex_num = hex(decimal_num) # 转为十六进制
print(hex_num) # 输出:'0x1f'
在此,0b11111是二进制数,转换后的十进制值是31,而对应的十六进制表示为0x1f。
总结
进制转换在编程中是一个非常常见的操作,Python通过简单的语法提供了强大的支持。无论是将十六进制、二进制、八进制转换为十进制,还是将十进制转换为其他进制,int()函数和内置函数bin()、oct()、hex()都能够轻松实现。