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

如何将二进制字符串及一维字符串数组按每2位转十进制数值

实现方案

核心转换逻辑

先明确需求规则:

  • 支持两种输入类型:空格分隔的二进制字符串、一维字符串数组(每个元素为独立二进制段)
  • 每个独立二进制段从左到右每2位拆分为一组,每组转十进制后按顺序拼接为该段的转换结果
  • 字符串输入的原始空格位置、数量全部保留,不做增减

分步实现逻辑

  • 输入类型判断:如果是一维数组直接遍历每个元素转换;如果是字符串先拆分出空格段和二进制段,二进制段转换后按原顺序拼接
  • 单二进制段转换步骤:
    1. 若二进制段长度为奇数,左侧补1个0凑成2的整数倍长度(如果需要右侧补0可自行调整补位逻辑)
    2. 从左到右按步长2拆分得到多个2位二进制分组
    3. 每个分组转十进制后转字符串,按顺序拼接得到最终结果

Python 代码实现

import re

def convert_single_bin(bin_str: str) -> str:
    # 处理单个二进制段转换
    length = len(bin_str)
    # 奇数长度左侧补0
    if length % 2 != 0:
        bin_str = '0' + bin_str
    # 每2位拆分
    groups = [bin_str[i:i+2] for i in range(0, len(bin_str), 2)]
    # 每组转十进制后拼接
    return ''.join(str(int(g, 2)) for g in groups)

def bin_convert(input_data):
    # 处理一维字符串数组输入
    if isinstance(input_data, list):
        return [convert_single_bin(s) for s in input_data]
    # 处理字符串输入,保留原始空格
    elif isinstance(input_data, str):
        # 正则拆分所有空格段和非空格段
        parts = re.findall(r'(\s+|\S+)', input_data)
        res = []
        for part in parts:
            res.append(part if part.isspace() else convert_single_bin(part))
        return ''.join(res)
    else:
        raise TypeError("仅支持字符串或一维字符串数组类型输入")

# 测试用例
if __name__ == "__main__":
    print(repr(bin_convert("10 1111 1010")))  # 输出 '2 33 22'
    print(repr(bin_convert(" 11 01 1010")))   # 输入1个空格开头则输出 ' 3 1 22',输入2个空格开头则输出对应双空格前缀
    print(bin_convert(["10", "1111", "1010"])) # 输出 ['2', '33', '22']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 01:00:03