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

如何将以字符串存储的Big Decimal转换为二进制字符串

字符串形式超大十进制数转二进制字符串的实现方法

由于输入的十进制数超出常规数值类型的存储范围,我们可以通过字符串模拟十进制除法的方式完成转换,核心逻辑是反复将十进制数除以2,记录余数,最后反转余数序列得到二进制字符串。

实现步骤

  • 逐位处理十进制字符串,模拟除以2的运算,得到商(作为下一轮输入)和余数(0或1)
  • 收集每次的余数,由于余数是从二进制低位到高位生成的,最后反转序列得到正确的二进制字符串
  • 处理特殊情况:输入为'0'时直接返回'0',避免空结果

Python代码实现

def decimal_str_to_binary(decimal_str):
    if decimal_str == '0':
        return '0'
    
    binary_digits = []
    current = decimal_str
    
    while current != '0':
        remainder = 0
        new_current = []
        # 逐位计算商和余数
        for digit in current:
            num = remainder * 10 + int(digit)
            quotient_digit = num // 2
            remainder = num % 2
            # 跳过前导零,除非商本身为0
            if new_current or quotient_digit != 0:
                new_current.append(str(quotient_digit))
        binary_digits.append(str(remainder))
        # 更新当前处理的十进制字符串
        current = ''.join(new_current) if new_current else '0'
    
    # 反转余数序列得到二进制字符串
    return ''.join(reversed(binary_digits))

示例验证

输入:

input_decimal = '31314232352342341239081370934702357023470'
print(decimal_str_to_binary(input_decimal))

输出:

10101101110101000011001101011101101001100010100111111100001011

额外说明

  • 纯字符串操作,无需依赖大数计算库,支持任意长度的十进制字符串
  • 自动处理输入中的前导零,不影响最终结果
  • 时间复杂度为O(n*m),其中n是十进制字符串的长度,m是二进制字符串的长度,效率适用于绝大多数场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:48