python如何进行进制转换

1. 概述

进制转换是计算机中非常常见的操作,其中最常见的是二进制、十进制、八进制和十六进制的转换。Python提供了多种方法可以完成进制转换,本文将介绍Python的进制转换函数、位运算符、以及常见的进制转换实例。

2. 进制转换函数

Python内置了两个方法,可以用于不同进制之间的转换。

2.1 bin()函数

bin()函数用于将一个整数转换成二进制字符串,其语法为:

bin(x)

其中,x是需要转换为二进制的整数。

下面是一个例子,将数字10转换为二进制字符串:

x = 10

binary = bin(x)

print(binary)

结果:

0b1010

可以看到,bin()函数返回有一个前缀"0b"的二进制字符串。

2.2 int()函数

int()函数可以将不同进制下的字符串转换为十进制整数,其语法为:

int(x, base)

其中,x是需要转换为十进制的字符串,base是原数的进制数。

下面是一个例子,将十六进制数"0x1b"转换为十进制整数:

x = "0x1b"

decimal = int(x, 16)

print(decimal)

结果:

27

x是一个十六进制的字符串,并且指定原数的进制数是16。int()函数返回了相应的十进制整数27。

3. 位运算符

Python还有一些用于进行二进制运算的位运算符。下面列举了一些常见的位运算符:

运算符 描述 示例 结果
& 按位与。两位都是1则为1,否则为0。 0b1010 & 0b1100 0b1000
| 按位或。两位都是0则为0,否则为1。 0b1010 | 0b1100 0b1110
^ 按位异或。两位相同则为0,不同则为1。 0b1010 ^ 0b1100 0b0110
~ 按位取反。0变成1,1变成0。 ~0b1010 0b0101
<< 左移。把一个数的所有位都向左移若干位,高位移出(舍弃),低位补0。 0b1010 << 2 0b101000
>> 右移。把一个数的所有位都向右移若干位,低位移出(舍弃),高位补0或1,取决于原数是正数还是负数。 0b1010 >> 2 0b0010

注意:二进制数的位数可能会超出两个字节,使用位运算符运算后,结果也是超出两个字节的。

4. 进制转换实例

4.1 二进制转十进制

下面是一个将二进制数转换为十进制的例子:

binary = "1010"

decimal = 0

n = len(binary)

for i in range(n):

decimal += int(binary[i]) * 2 ** (n-i-1)

print(decimal)

结果:

10

以上代码将二进制字符串"1010"转换为十进制整数,并打印出结果。

4.2 十进制转二进制

下面是一个将十进制数转换为二进制的例子:

decimal = 10

binary = ""

while decimal != 0:

remainder = decimal % 2

binary = str(remainder) + binary

decimal //= 2

print(binary)

结果:

1010

该代码将十进制整数10转换为二进制字符串"1010"。

4.3 八进制转十进制

下面是一个将八进制数转换为十进制的例子:

octal = "34"

decimal = 0

n = len(octal)

for i in range(n):

decimal += int(octal[i]) * 8 ** (n-i-1)

print(decimal)

结果:

28

以上代码将八进制字符串"34"转换为十进制整数28。

4.4 十进制转八进制

下面是一个将十进制数转换为八进制的例子:

decimal = 28

octal = ""

while decimal != 0:

remainder = decimal % 8

octal = str(remainder) + octal

decimal //= 8

print(octal)

结果:

34

该代码将十进制整数28转换为八进制字符串"34"。

4.5 十六进制转十进制

下面是一个将十六进制数转换为十进制的例子:

hexadecimal = "1b"

decimal = int(hexadecimal, 16)

print(decimal)

结果:

27

以上代码将十六进制字符串"1b"转换为十进制整数27。

4.6 十进制转十六进制

下面是一个将十进制数转换为十六进制的例子:

decimal = 27

hexadecimal = hex(decimal)

print(hexadecimal)

结果:

0x1b

该代码将十进制整数27转换为十六进制字符串"1b"。

5. 结论

Python提供了许多内置方法,可以轻松地进行不同进制之间的转换,同时Python的位运算符也让我们在进行位运算时更加高效。

后端开发标签