You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

八进制转十进制时用np.array_split拆分不等长数组是否过于复杂?

八进制转十进制的代码优化方案

原代码的问题根源在于:将所有八进制数的每一位计算结果存入同一个全局列表,再用np.array_split拆分,当输入的八进制数长度不同时,拆分逻辑会出错(拆分是按元素总数均分,而非按每个数的位数分界)。

直接采用逐个处理每个输入的八进制字符串的思路即可解决问题,逻辑更简洁可靠,无需依赖数组拆分操作。

方法一:利用Python内置函数(最简洁)

Python的int()函数支持直接指定进制转换,第二个参数传入8即可将八进制字符串转为十进制整数:

def decode(code):
    octal_nums = code.split()
    decimal_nums = [str(int(num, 8)) for num in octal_nums]
    return " ".join(decimal_nums)

测试示例:

  • 输入"23 240 1",输出"19 160 1",完全符合预期。

方法二:手动实现进制转换逻辑(保留原思路但优化)

如果不想依赖内置函数,可对每个八进制字符串单独计算,避免全局列表拆分的问题:

def decode(code):
    octal_nums = code.split()
    decimal_nums = []
    for num in octal_nums:
        total = 0
        length = len(num)
        for idx, digit in enumerate(num):
            # 计算当前位的权重:8的(长度-1-索引)次方
            weight = 8 ** (length - 1 - idx)
            total += int(digit) * weight
        decimal_nums.append(str(total))
    return " ".join(decimal_nums)

此逻辑中每个八进制数的计算完全独立,不会受其他数长度的影响,彻底解决了原代码的拆分错误问题。

内容的提问来源于stack exchange,提问作者Ed Masters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:20:36