不使用int()函数如何将二进制字符串转换为十进制整数?
二进制字符串转十进制整数实现方案(不使用int()函数)
实现原理
二进制转十进制的核心规则:从左到右遍历二进制字符串的每一位,每遍历一位就将当前累计结果乘以2,再加上当前位的数值(0或1),本质是逐位累计二进制位的对应权重,全程不需要调用类型转换函数。
具体实现步骤
- 可先做输入合法性校验:判断输入字符串的每个字符是否仅为
'0'或'1',不符合则抛出异常 - 初始化十进制结果变量为0
- 遍历二进制字符串的每一个字符:
- 将当前结果乘以2,相当于权重左移一位,匹配高位二进制的权值
- 通过
ord(当前字符) - ord('0')的方式把字符转为对应整数值,利用ASCII码连续编码的特性规避int()函数调用 - 把转换得到的数值加到结果变量上
- 遍历完成后直接返回最终结果即可
代码示例(Python)
def binary_to_decimal(bin_str: str) -> int: decimal = 0 # 输入合法性校验 for c in bin_str: if c not in ('0', '1'): raise ValueError("输入不是合法的二进制字符串") # 逐位计算十进制值 for char in bin_str: decimal = decimal * 2 + (ord(char) - ord('0')) return decimal # 测试用例 print(binary_to_decimal('1011')) # 输出11 print(binary_to_decimal('1111')) # 输出15 print(binary_to_decimal('100000')) # 输出32
实现说明
- 整个实现全程没有调用
int()函数,符合作业限制要求 - 遍历逻辑的时间复杂度为O(n),n为二进制字符串的长度,运算效率高
- 逻辑兼容任意长度的合法二进制字符串输入
内容的提问来源于stack exchange,提问作者Harsh1010
相关产品推荐
相关产品推荐

