Python实现 —— 十进制转二进制、八进制、 十六进制

本文详细介绍了如何使用Python进行十进制与二进制、八进制、十六进制之间的转换,包括Python内置函数的使用及自定义函数实现方法。通过实例演示了不同进制之间的转换过程,特别关注了十六进制中对于大于10的数字转换为字母的处理。
部署运行你感兴趣的模型镜像

Python实现 —— 十进制转二进制、八进制、 十六进制

内置函数实现

dec = 369 #十进制数
b = bin(dec) #十进制转二进制
o = oct(dec) #十进制转八进制
x = hex(dec) #十进制转十六进制
print(b)
print(o)
print(x)
#结果: 0b表示二进制、0o表示八进制、0x表示十六进制
#0b101110001
#0o561
#0x171

非内置函数实现

十进制转二进制

def Dec_to_Bin(num):
    result = ""
    while num != 0:
        ret = num % 2
        num //= 2
        result = str(ret) + result
    return result


print(Dec_to_Bin(1024))
#结果:
#10000000000

十进制转八进制

def Dec_to_Oct(num):
    result = ""
    while num != 0:
        ret = num % 8
        num //= 8
        result = str(ret) + result
    return result


print(Dec_to_Oct(1024))
#结果:
#2000

所以十进制转二到九进制都可以用上面的自定义函数,只需改一下你要转的进制即可

十进制转十六进制

def Dec_to_Hex(num):
    result = ""
    while num != 0:
        ret = num % 16
        num //= 16
        if ret >= 10:
            ret = chr(ord('a') + ret - 10)
        result = str(ret) + result
    return result


print(Dec_to_Hex(1024))
#结果:
#400

注意:

  • 十六进制有15个数字,除了0-9外,还有 a-f ,分别代表10-15,所以转十六进制时要注意>=10的数要换成相应的字母。
  • ord:把字母转换成对应ASCII码的函数,返回值是对应的十进制整数
  • chr:把ASCII码转换成对应的符号的函数,返回值是当前整数对应的 ASCII 字符

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python 中,可以使用内置函数将十进制换为二进制八进制十六进制表示形式。Python 提供了多种方法来实现这些换,包括 `bin()`、`oct()`、`hex()` 以及 `format()` 和 `format` 字符串格式化方法。以下是详细的换方法及示例。 ### 使用内置函数进行进制换 1. **十进制二进制** 使用 `bin()` 函数可以将整数换为二进制字符串,返回的字符串以 `'0b'` 开头。 ```python decimal_number = 21 binary_number = bin(decimal_number) print(binary_number) # 输出: 0b10101 ``` 2. **十进制八进制** 使用 `oct()` 函数可以将整数换为八进制字符串,返回的字符串以 `'0o'` 开头。 ```python decimal_number = 302 octal_number = oct(decimal_number) print(octal_number) # 输出: 0o456 ``` 3. **十进制十六进制** 使用 `hex()` 函数可以将整数换为十六进制字符串,返回的字符串以 `'0x'` 开头。 ```python decimal_number = 43981 hexadecimal_number = hex(decimal_number) print(hexadecimal_number) # 输出: 0xabcd ``` 4. **去除前缀并格式化输出** 如果不希望输出包含 `'0b'`、`'0o'` 或 `'0x'` 前缀,可以通过切片操作或 `format()` 函数去除前缀。 ```python binary_number = bin(21)[2:] # 去除 '0b' print(binary_number) # 输出: 10101 octal_number = oct(302)[2:] # 去除 '0o' print(octal_number) # 输出: 456 hexadecimal_number = hex(43981)[2:] # 去除 '0x' print(hexadecimal_number) # 输出: abcd ``` 5. **使用 `format()` 格式化输出** `format()` 函数允许更灵活的格式化选项,可以通过指定格式字符串来控制输出形式。 ```python decimal_number = 21 binary_number = format(decimal_number, 'b') # 二进制 print(binary_number) # 输出: 10101 octal_number = format(decimal_number, 'o') # 八进制 print(octal_number) # 输出: 25 hexadecimal_number = format(decimal_number, 'x') # 十六进制(小写) print(hexadecimal_number) # 输出: 15 hexadecimal_number_upper = format(decimal_number, 'X') # 十六进制(大写) print(hexadecimal_number_upper) # 输出: 15 ``` 6. **使用 `format` 字符串格式化** 可以通过 `"{:b}".format()`、`"{:o}".format()` 和 `"{:x}".format()` 等方式实现类似的格式化输出。 ```python binary_number = "{:b}".format(21) print(binary_number) # 输出: 10101 octal_number = "{:o}".format(302) print(octal_number) # 输出: 456 hexadecimal_number = "{:x}".format(43981) print(hexadecimal_number) # 输出: abcd ``` ### 进制换函数的综合应用 可以编写一个通用函数,将一组十进制换为二进制八进制十六进制字符串列表。 ```python def convert_decimal_to_bases(decimal_list, base): if base == 2: return [bin(num)[2:] for num in decimal_list] elif base == 8: return [oct(num)[2:] for num in decimal_list] elif base == 16: return [hex(num)[2:] for num in decimal_list] else: raise ValueError("Unsupported base. Use 2, 8, or 16.") # 测试函数 decimal_numbers = [10, 20, 30, 40] binary_numbers = convert_decimal_to_bases(decimal_numbers, 2) octal_numbers = convert_decimal_to_bases(decimal_numbers, 8) hexadecimal_numbers = convert_decimal_to_bases(decimal_numbers, 16) print("Binary:", binary_numbers) # 输出: Binary: ['1010', '10100', '11110', '101000'] print("Octal:", octal_numbers) # 输出: Octal: ['12', '24', '36', '50'] print("Hexadecimal:", hexadecimal_numbers) # 输出: Hexadecimal: ['a', '14', '1e', '28'] ``` ### 进制换的注意事项 - 在使用 `bin()`、`oct()` 和 `hex()` 时,返回值包含前缀 `'0b'`、`'0o'` 和 `'0x'`,如果需要去除前缀,可以使用切片操作 `str[2:]`。 - `format()` 函数和字符串格式化方法提供了更灵活的格式化选项,适合需要自定义输出格式的场景。 - 如果需要将字符串换回十进制整数,可以使用 `int()` 函数并指定基数,例如 `int("10101", 2)` 将二进制字符串 `"10101"` 换为十进制整数 `21` [^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值