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并翻转结果字符串。