c语言编程笔录

首页 >   > 笔记大全

笔记大全

python常见进制转换方法有哪些

更新时间:2023-07-29

前言:

在计算机编程中,我们经常需要进行不同进制之间的转换操作。Python提供了多种方法来进行进制转换,下面将介绍常见的四种方法,分别是使用内置函数、使用字符串格式化、使用位运算和使用递归。

方法一:使用内置函数

Python提供了内置函数bin()、oct()和hex(),用于将整数转换为二进制、八进制和十六进制字符串。这些函数接受一个整数参数,并返回相应的字符串表示。

num = 10
bin_str = bin(num)  # 将整数转换为二进制字符串
oct_str = oct(num)  # 将整数转换为八进制字符串
hex_str = hex(num)  # 将整数转换为十六进制字符串
print(bin_str, oct_str, hex_str)  # 输出结果为 '0b1010', '0o12', '0xa'

上述代码中,bin()函数返回的二进制字符串以'0b'开头,oct()函数返回的八进制字符串以'0o'开头,hex()函数返回的十六进制字符串以'0x'开头。

方法二:使用字符串格式化

Python的字符串格式化功能可以用来将整数格式化为不同进制的字符串。在格式化字符串中,可以使用'b'、'o'和'x'分别表示二进制、八进制和十六进制。在字符串前面加上格式化符号'%'

num = 10
bin_str = '%b' % num  # 将整数转换为二进制字符串
oct_str = '%o' % num  # 将整数转换为八进制字符串
hex_str = '%x' % num  # 将整数转换为十六进制字符串
print(bin_str, oct_str, hex_str)  # 输出结果为 '1010', '12', 'a'

上述代码中,'%b'表示将整数格式化为二进制字符串,'%o'表示将整数格式化为八进制字符串,'%x'表示将整数格式化为十六进制字符串。

方法三:使用位运算

利用位运算符<<和>>可以将十进制数转换为二进制数,将二进制数转换为十进制数。

num = 10
bin_str = bin(num)[2:]  # 将整数转换为二进制字符串
oct_str = oct(num)[2:]  # 将整数转换为八进制字符串
hex_str = hex(num)[2:]  # 将整数转换为十六进制字符串
print(bin_str, oct_str, hex_str)  # 输出结果为 '1010', '12', 'a'

上述代码中,使用位运算符'<<'将十进制数转换为二进制数,然后使用切片操作[2:]去掉字符串开头的'0b'、'0o'或'0x'。

方法四:使用递归

可以使用递归函数来实现进制转换。递归函数将整数除以进制数,将得到的商再次除以进制数,直到商为0。将每次得到的余数(除数)与字符映射表中的对应字符拼接起来,最后翻转字符串得到进制表示。

def base_conversion(num, base):
    mapping = '0123456789abcdef'
    if num < base:
        return mapping[num]
    return base_conversion(num // base, base) + mapping[num % base]

num = 10
bin_str = base_conversion(num, 2)  # 将整数转换为二进制字符串
oct_str = base_conversion(num, 8)  # 将整数转换为八进制字符串
hex_str = base_conversion(num, 16)  # 将整数转换为十六进制字符串
print(bin_str, oct_str, hex_str)  # 输出结果为 '1010', '12', 'a'

上述代码中,定义了一个递归函数base_conversion(),接受两个参数:整数num和进制base。在每一次递归中,将num除以base,得到商和余数,余数对应字符映射表中的字符,将余数与下一层递归得到的字符串拼接起来。递归结束条件是num小于base,此时直接返回对应的字符。

总结:

本文介绍了Python中常见的四种进制转换方法。使用内置函数bin()、oct()和hex()可以将整数转换为二进制、八进制和十六进制字符串。使用字符串格式化可以通过在格式化字符串中加入'b'、'o'和'x'来将整数转换为不同进制的字符串。利用位运算符<<和>>可以将十进制数转换为二进制数,将二进制数转换为十进制数。使用递归函数可以实现通用的进制转换,通过递归将整数除以进制数并拼接对应字符,直到商为0并翻转结果字符串。