Python实现不同进制间转换的常用内置函数详解

 更新时间:2026年07月03日 08:41:37   作者:老师好,我是刘同学  
Python提供了多种内置函数来实现不同进制之间的转换,主要包括bin()oct()hex()和int()等函数,下面将详细介绍这些方法的使用方式和实际应用场景,有需要的小伙伴可以了解下

Python提供了多种内置函数来实现不同进制之间的转换,主要包括bin()oct()hex()int()等函数。下面将详细介绍这些方法的使用方式和实际应用场景。

1. 十进制转其他进制

1.1 bin() - 十进制转二进制

bin()函数将十进制整数转换为二进制字符串,返回的字符串以 0b为前缀。

# 十进制转二进制示例
decimal_num = 10
binary_str = bin(decimal_num)
print(f"十进制 {decimal_num} 转二进制: {binary_str}")  # 输出: 0b1010

# 去除前缀的二进制表示
binary_clean = bin(decimal_num)[2:]
print(f"去除前缀的二进制: {binary_clean}")  # 输出: 1010

# 负数转换示例
negative_num = -5
print(f"负数 {negative_num} 的二进制: {bin(negative_num)}")  # 输出: -0b101

1.2 oct() - 十进制转八进制

oct()函数将十进制整数转换为八进制字符串,返回的字符串以 0o为前缀。

# 十进制转八进制示例
decimal_num = 20
octal_str = oct(decimal_num)
print(f"十进制 {decimal_num} 转八进制: {octal_str}")  # 输出: 0o24

# 去除前缀的八进制表示
octal_clean = oct(decimal_num)[2:]
print(f"去除前缀的八进制: {octal_clean}")  # 输出: 24

# 大数转换示例
large_num = 255
print(f"大数 {large_num} 的八进制: {oct(large_num)}")  # 输出: 0o377

1.3 hex() - 十进制转十六进制

hex()函数将十进制整数转换为十六进制字符串,返回的字符串以 0x为前缀,字母部分使用小写。

# 十进制转十六进制示例
decimal_num = 255
hex_str = hex(decimal_num)
print(f"十进制 {decimal_num} 转十六进制: {hex_str}")  # 输出: 0xff

# 去除前缀的十六进制表示
hex_clean = hex(decimal_num)[2:]
print(f"去除前缀的十六进制: {hex_clean}")  # 输出: ff

# 包含字母的十六进制示例
decimal_num = 170
print(f"十进制 {decimal_num} 的十六进制: {hex(decimal_num)}")  # 输出: 0xaa

2. 其他进制转十进制

2.1 int()函数的基本用法

int()函数可以将其他进制的字符串转换为十进制整数,通过第二个参数指定原始进制。

# 二进制转十进制
binary_str = "1010"
decimal_num = int(binary_str, 2)
print(f"二进制 {binary_str} 转十进制: {decimal_num}")  # 输出: 10

# 八进制转十进制
octal_str = "24"
decimal_num = int(octal_str, 8)
print(f"八进制 {octal_str} 转十进制: {decimal_num}")  # 输出: 20

# 十六进制转十进制
hex_str = "ff"
decimal_num = int(hex_str, 16)
print(f"十六进制 {hex_str} 转十进制: {decimal_num}")  # 输出: 255

2.2 带前缀的字符串转换

int()函数也可以处理带前缀的进制字符串:

# 带前缀的二进制转十进制
binary_with_prefix = "0b1010"
decimal_num = int(binary_with_prefix, 0)  # 使用0让Python自动检测进制
print(f"带前缀二进制转十进制: {decimal_num}")  # 输出: 10

# 带前缀的八进制转十进制
octal_with_prefix = "0o24"
decimal_num = int(octal_with_prefix, 0)
print(f"带前缀八进制转十进制: {decimal_num}")  # 输出: 20

# 带前缀的十六进制转十进制
hex_with_prefix = "0xff"
decimal_num = int(hex_with_prefix, 0)
print(f"带前缀十六进制转十进制: {decimal_num}")  # 输出: 255

3. 任意进制之间的转换

3.1 通过十进制作为中间进制

要实现任意进制之间的转换,可以先将原始进制转换为十进制,再从十进制转换到目标进制:

def convert_base(number, from_base, to_base):
    """
    通用进制转换函数
    :param number: 要转换的数字(字符串形式)
    :param from_base: 原始进制
    :param to_base: 目标进制
    :return: 转换后的字符串
    """
    # 先转换为十进制
    decimal_num = int(number, from_base)
    
    # 再从十进制转换到目标进制
    if to_base == 2:
        return bin(decimal_num)
    elif to_base == 8:
        return oct(decimal_num)
    elif to_base == 16:
        return hex(decimal_num)
    elif to_base == 10:
        return str(decimal_num)
    else:
        raise ValueError("不支持的进制")

# 二进制转八进制
binary_to_octal = convert_base("1010", 2, 8)
print(f"二进制 1010 转八进制: {binary_to_octal}")  # 输出: 0o12

# 十六进制转二进制
hex_to_binary = convert_base("ff", 16, 2)
print(f"十六进制 ff 转二进制: {hex_to_binary}")  # 输出: 0b11111111

# 八进制转十六进制
octal_to_hex = convert_base("377", 8, 16)
print(f"八进制 377 转十六进制: {octal_to_hex}")  # 输出: 0xff

3.2 使用format函数进行格式化输出

format()函数提供了更灵活的进制转换方式,可以控制输出格式:

# 使用format进行进制转换
num = 255

# 二进制格式化
binary_format = format(num, 'b')
print(f"format二进制: {binary_format}")  # 输出: 11111111

# 八进制格式化
octal_format = format(num, 'o')
print(f"format八进制: {octal_format}")  # 输出: 377

# 十六进制格式化(小写)
hex_lower = format(num, 'x')
print(f"format十六进制(小写): {hex_lower}")  # 输出: ff

# 十六进制格式化(大写)
hex_upper = format(num, 'X')
print(f"format十六进制(大写): {hex_upper}")  # 输出: FF

# 带前缀的格式化
binary_with_prefix = format(num, '#b')
print(f"带前缀二进制: {binary_with_prefix}")  # 输出: 0b11111111

4. 函数对比与选择指南

下表总结了各进制转换函数的特点和适用场景:

函数功能返回值前缀适用场景示例
bin(x)十进制转二进制///
0b`位运算、硬件编程bin(10) → '0b1010'//
oct(x)十进制转八进制///
0o`文件权限、Unix系统oct(64) → '0o100'//
hex(x)十进制转十六进制///
0x`内存地址、颜色代码hex(255) → '0xff'//
int(x, base)其他进制转十进制通用转换、数据解析int('1010', 2) → 10
format(x, spec)格式化转换可选自定义输出、显示格式format(10, 'b') → '1010'

5. 实际应用场景

5.1 颜色值转换

# RGB颜色值转换
def rgb_to_hex(r, g, b):
    """将RGB颜色值转换为十六进制"""
    return f"#{format(r, '02x')}{format(g, '02x')}{format(b, '02x')}"

# 使用示例
color_hex = rgb_to_hex(255, 128, 0)
print(f"RGB(255,128,0) 转十六进制: {color_hex}")  # 输出: #ff8000

# 反向转换
def hex_to_rgb(hex_color):
    """将十六进制颜色值转换为RGB"""
    hex_color = hex_color.lstrip('#')
    r = int(hex_color[0:2], 16)
    g = int(hex_color[2:4], 16)
    b = int(hex_color[4:6], 16)
    return r, g, b

rgb_values = hex_to_rgb("#ff8000")
print(f"十六进制 #ff8000 转RGB: {rgb_values}")  # 输出: (255, 128, 0)

5.2 文件权限处理

# Linux文件权限转换
def permissions_to_octal(perm_string):
    """将rwx权限字符串转换为八进制"""
    perm_dict = {'r': 4, 'w': 2, 'x': 1, '-': 0}
    octal_value = 0
    
    for i, char in enumerate(perm_string):
        octal_value += perm_dict[char] * (8 ** (2 - i))
    
    return oct(octal_value)

# 使用示例
file_perm = "rwxr-xr--"
octal_perm = permissions_to_octal(file_perm)
print(f"权限 {file_perm} 的八进制表示: {octal_perm}")  # 输出: 0o754

5.3 网络编程中的IP地址处理

# IP地址转换
def ip_to_binary(ip_address):
    """将IP地址转换为二进制表示"""
    parts = ip_address.split('.')
    binary_parts = [format(int(part), '08b') for part in parts]
    return '.'.join(binary_parts)

# 使用示例
ip = "192.168.1.1"
binary_ip = ip_to_binary(ip)
print(f"IP地址 {ip} 的二进制表示: {binary_ip}")  # 输出: 11000000.10101000.00000001.00000001

通过掌握这些进制转换方法,您可以在数据处理、系统编程、网络通信等多个领域灵活应用,提高编程效率和代码质量。

到此这篇关于Python实现不同进制间转换的常用内置函数详解的文章就介绍到这了,更多相关Python进制转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中print输出有空格如何解决

    python中print输出有空格如何解决

    这篇文章主要介绍了python中print输出有空格的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 15个高级Python技巧提高代码效率更加Pythonic

    15个高级Python技巧提高代码效率更加Pythonic

    Python 是一种多用途、功能强大的编程语言,具有广泛的特性和能力,在本文中,我们将探讨 15 个高级 Python 技巧,它们有助于改善您的开发工作流程,并使您的代码更加高效,更加 Pythonic
    2023-12-12
  • Python 身份验证和授权库使用详解(python jwt库)

    Python 身份验证和授权库使用详解(python jwt库)

    python_jwt是一个Python库,用于生成、解析和验证JSON Web Tokens(JWT),它完全符合JWT标准规范(RFC 7519),并提供了简单而强大的API,使得用户可以轻松地在Python应用中实现JWT功能,通过本文的介绍,深入探讨了python_jwt库的功能特性、使用方法以及应用场景
    2021-01-01
  • Python在实时数据流处理中集成Flink与Kafka

    Python在实时数据流处理中集成Flink与Kafka

    随着大数据和实时计算的兴起,实时数据流处理变得越来越重要,Flink和Kafka是实时数据流处理领域的两个关键技术,下面我们就来看看如何使用Python将Flink和Kafka集成在一起吧
    2025-03-03
  • Python可视化最频繁使用的10大工具总结

    Python可视化最频繁使用的10大工具总结

    数据可视化是数据科学中不可缺少的一部分,下面这篇文章主要给大家介绍了关于Python可视化最频繁使用的10大工具,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Python内置函数dir详解

    Python内置函数dir详解

    这篇文章主要介绍了Python内置函数dir详解,本文讲解了命令介绍、使用实例、使用dir查找module下的所有类、如何找到当前模块下的类等内容,需要的朋友可以参考下
    2015-04-04
  • OPENCV去除小连通区域,去除孔洞的实例讲解

    OPENCV去除小连通区域,去除孔洞的实例讲解

    今天小编就为大家分享一篇OPENCV去除小连通区域,去除孔洞的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python multiprocessing.value实现多进程数据共享的示例

    Python multiprocessing.value实现多进程数据共享的示例

    本文介绍了Python中的multiprocessing.value,通过示例代码展示了如何使用这个类实现多进程数据共享,以及使用场景和注意事项等内容,感兴趣的朋友跟随小编一起看看吧
    2023-07-07
  • Python datetime包函数简单介绍

    Python datetime包函数简单介绍

    这篇文章主要介绍了Python datetime包函数简单介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python内置函数compile(),complex()的使用

    python内置函数compile(),complex()的使用

    这篇文章主要为大家详细介绍了python内置函数compile(),complex()的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论