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

在Windows PowerShell运行Python二进制转十进制代码结果异常:预期13却得733

问题分析与解决方案

嘿,我一眼就瞅出问题所在了!先看你这段出问题的代码:

B = '1101'
I = 0
while B:
    I = I * 2 + ord(B[0])
    B = B[1:]
print(I)

你得到733而非预期的13,核心bug是你误用了ord(B[0])——这个函数返回的是字符的ASCII码值,而不是字符对应的数字:

  • 字符'1'的ASCII码是49,'0'是48
  • 咱们手动走一遍计算流程就清楚了:
    1. 第一次循环:I = 0*2 + 49 = 49,B变为'101'
    2. 第二次循环:I = 49*2 +49 = 147,B变为'01'
    3. 第三次循环:I =147*2 +48= 342,B变为'1'
    4. 第四次循环:I=342*2 +49=733,这就是你得到错误结果的原因

修正方案

你需要把字符转换成对应的整数('1'转1,'0'转0),这里给你两种可行的方式:

方式一:修改原循环逻辑

把ord()换成int()来转换单个字符,代码调整后如下:

B = '1101'
I = 0
while B:
    I = I * 2 + int(B[0])  # 替换ord为int,直接转成数字
    B = B[1:]
print(I)  # 输出13,符合预期

方式二:用Python内置函数(更简洁)

Python其实已经内置了进制转换的功能,一行代码就能搞定二进制转十进制:

print(int('1101', 2))  # 第二个参数指定输入字符串是二进制格式,输出13

这样就能得到你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:55:36