登录/注册

进制转换器在线

更多
我们正在构建一个进制转换器。它应该能够处理从2进制到36进制的转换(因为数字0-9和字母a-z,总共36个字符)。 功能要求: 1. 用户输入:一个数字字符串,源进制(base1),目标进制(base2) 2. 输出:将输入数字从源进制转换为目标进制后的字符串 注意: - 输入的数字字符串可能包含大写或小写字母(代表10-35),但输出时我们统一使用小写字母。 - 需要验证输入是否合法(在源进制下是否有效,以及进制数是否在2-36之间) 步骤: 1. 将输入字符串转换为小写,以便统一处理(因为用户可能输入大写字母)。 2. 验证源进制和目标进制是否在2到36之间。 3. 验证输入字符串在源进制下是否合法(每个字符都在该进制所允许的字符范围内,例如二进制只能有0和1)。 4. 将源进制字符串转换为十进制(中间形式)。 5. 将十进制数转换为目标进制字符串。 转换方法: - 从字符串到十进制:按权展开求和。 例如:二进制"1010" -> 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8+0+2+0 = 10(十进制) - 从十进制到目标进制:除基取余法,逆序排列。注意处理0的情况。 特殊处理:如果输入是"0",那么无论什么进制转换到任何进制,结果都是"0"。 我们写一个函数,名为convert_base,参数为(num_str, base1, base2)

以下是进制转换器的详细说明和实现方法,支持 2进制到36进制 之间的转换(使用数字0-9和字母a-z表示10-35):


核心算法步骤:

  1. 验证输入

    • 检查源进制(base1)和目标进制(base2)是否在 2~36 范围内。
    • 检查输入字符串 num_str 是否符合源进制规则(如二进制只能包含 01)。
  2. 统一为小写
    将输入字符串中的字母转为小写(如 Aa)。

  3. 转为十进制(中间转换)
    按权展开求和:
    公式
    [ \text{decimal_value} = \sum_{i=0}^{n-1} ( \text{char_to_value}(num_str[i]) \times base1^{(n-1-i)} ) ]

    • 从右向左逐位计算(最低位权重为 (base1^0))。
    • 字母 a~z 转为数值 10~35。
  4. 十进制转目标进制
    除基取余法(反向拼接余数):

    • 用十进制值反复除以 base2,记录余数。
    • 余数 >9 时转为字母(如 10→a)。
    • 若结果为 0,直接返回 "0"

Python 代码实现:

def convert_base(num_str, base1, base2):
    # 验证进制范围
    if not (2 <= base1 <= 36) or not (2 <= base2 <= 36):
        return "进制必须在2-36之间"

    num_str = num_str.lower()  # 统一小写
    valid_chars = "0123456789abcdefghijklmnopqrstuvwxyz"[:base1]

    # 验证输入字符串合法性
    if any(char not in valid_chars for char in num_str):
        return f"输入不合法:在 {base1} 进制下只能包含 {valid_chars}"

    # 特判:输入为 "0"
    if num_str == "0":
        return "0"

    # 转十进制
    decimal_value = 0
    for char in num_str:
        decimal_value = decimal_value * base1 + (ord(char) - 87 if char.isalpha() else ord(char) - 48)

    # 转目标进制
    if decimal_value == 0:
        return "0"
    result = []
    while decimal_value:
        decimal_value, r = divmod(decimal_value, base2)
        result.append(chr(r + 87) if r > 9 else str(r))

    return ''.join(result[::-1])

# 测试示例
print(convert_base("1010", 2, 10))   # 输出: 10
print(convert_base("FF", 16, 2))     # 输出: 11111111
print(convert_base("Z", 36, 10))     # 输出: 35

使用示例:

输入字符串 源进制 目标进制 输出结果
"1010" 2 10 "10"
"FF" 16 2 "11111111"
"Z" 36 10 "35"
"2024" 10 16 "7e8"
"Hello" 32 10 "183067"

注意:字母不区分大小写(aA 均视为 10)。


在线使用:

您可以直接复制代码到 Python 环境运行,或访问在线 Python 工具(如 Replit)快速测试。输入格式为 convert_base("数字字符串", 源进制, 目标进制)

在线进制编码:数据转换的快捷通道

。为此,我们推出了在线二进制编码器,一个便捷、高效的数据转换工具。

2024-11-15 09:01:23

进制加权数模转换器讲解

二进制加权数模转换器是一种将数字二进制数转换成与数字数值成比例的等效模拟

2023-06-29 11:34:47

使用Arduino和OLED显示的二进制到十进制转换器

电子发烧友网站提供《使用Arduino和OLED显示器的二进制到十进制转换器

资料下载 李鑫 2022-10-31 14:30:12

DAC8800:八进制8位D/A转换器数据表

DAC8800:八进制8位D/A转换器数据表

资料下载 佚名 2021-05-22 08:00:06

精密微功率∆∑ RMS-DC转换器LTC1966

LTC®1966年是一个真正的RMS-DC转换器,它利用了一种创新的专利DS计算技术。LTC1966的内部增量西格玛电路使其比传统的对数抗对数RMS-DC转换器更精确、更低的功率和更灵活的使用。

资料下载 无惧无畏 2021-05-11 09:50:39

进制转换电路的设计资料和代码免费下载

对输入的4位二进制数据,能够根据外部的拨码开关来选择10进制转换`8进制

资料下载 佚名 2020-11-02 17:30:33

浮点数十六进制转换器应用程序软件免费下载

本文档的主要内容详细介绍的是浮点数十六进制转换器应用程序软件免费下载。

资料下载 yuanbai1986 2020-04-13 08:00:00

ADC模数转换器介绍

模数转换器(analog to Digital Converter,简称ADC)是一种数据转换器,它通过将模拟信号编码为二进制代码,使数字电路能

2023-06-26 11:44:22

DA转换器的相关资料分享

一、DA转换器的分类权电阻网络D/A转换器一个多位二进制数中每一位的1所代表的数值大小称为这一位的权。(此处放一个位数和权重的表格)对于N位的权

2021-11-19 07:35:49

数模转换器是什么

即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。12中文名数模转换器简 称DAC模数转换器即A/D

2021-07-26 06:44:38

常用的进制转换方法

图,就是将十进制转换成十六进制的excel计算表格,只需要使用其自带的公式(DEC2HEX)即可。    3-使用网络上的

2021-01-14 16:37:47

ADI在线研讨会:GSPS转换器宽带前端参数定义及设计方案

ADI在线研讨会:GSPS转换器宽带前端设计

2019-07-18 06:16:00

7天热门专题 换一换
相关标签