我正在windows powershell中运行此python代码以将二进制转换为十进制。我希望答案是13,但得到733

我正在windows powershell中运行此python代码以将二进制转换为十进制。我希望答案是13,但得到733,python,Python,这是我正在运行的代码: B = '1101' I = 0 while B: I = I * 2 +ord(B[0]) B = B[1:] print I 我不太清楚你为什么期待33岁,但我可以解释发生了什么 ord('1')(1的字符串表示)映射到49,而ord('0')映射到48。将ord切换到int应该可以解决您的问题 因此,对于循环的每个迭代(其中有4个),您将得到 49 147 342 733 这有意义吗?我不太清楚你为什么会期望33岁,但我可以解释发生

这是我正在运行的代码:

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

我不太清楚你为什么期待33岁,但我可以解释发生了什么

ord('1')(1的字符串表示)映射到49,而ord('0')映射到48。将
ord
切换到
int
应该可以解决您的问题

因此,对于循环的每个迭代(其中有4个),您将得到 49 147 342 733


这有意义吗?

我不太清楚你为什么会期望33岁,但我可以解释发生了什么

ord('1')(1的字符串表示)映射到49,而ord('0')映射到48。将
ord
切换到
int
应该可以解决您的问题

因此,对于循环的每个迭代(其中有4个),您将得到 49 147 342 733


这有意义吗?

ord('1')
不是
1
。你为什么不做
int(B[0])
?我真傻。谢谢。
ord
用法应该是
(ord(X)-ord('0'))
ord('1')
不是
1
。你为什么不做
int(B[0])
?我真傻。谢谢。
ord用法应该是
(ord(X)-ord('0'))
明白了。谢谢!应该知道ord('1')不是1。不用担心!使用python解释器(从命令行运行
python
)可以非常有帮助地测试这样的小事情。明白了。谢谢!应该知道ord('1')不是1。不用担心!使用python解释器(从命令行运行
python
)是一种非常有用的方法来测试这样的小事情。