Python 二进制数到ASCII数转换器不工作(PyVersion 3.6.4)
我试图编写一个程序,将二进制数转换为Ascii数。但是它不起作用。它总是吐出一个零。 这是我的密码:Python 二进制数到ASCII数转换器不工作(PyVersion 3.6.4),python,Python,我试图编写一个程序,将二进制数转换为Ascii数。但是它不起作用。它总是吐出一个零。 这是我的密码: import math Bin = input("") WordCounter = 0 PowerOfTwo = 0 BinNum = 0 while(True): try: BinNum += ((Bin[WordCounter]) * math.pow(2, PowerOfTwo)) WordCounter += 1 PowerOfTwo += 1 exc
import math
Bin = input("")
WordCounter = 0
PowerOfTwo = 0
BinNum = 0
while(True):
try:
BinNum += ((Bin[WordCounter]) * math.pow(2, PowerOfTwo))
WordCounter += 1
PowerOfTwo += 1
except: break
print(BinNum)
Bin[WordCounter]
具有类型str
,一个字符串。你需要像这样把它包装成int
BinNum += int(Bin[WordCounter]) * math.pow(2, PowerOfTwo)
(尽管您的代码仍然会产生一个向后的结果,但您需要考虑这一点)
问题是,如果您没有使用一个简单的
except
隐藏异常,您将得到一条非常有用的错误消息
BinNum += (Bin[WordCounter]) * math.pow(2, PowerOfTwo)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-45-d38cc5b7069c> in <module>()
----> 1 BinNum += (Bin[WordCounter]) * math.pow(2, PowerOfTwo)
TypeError: can't multiply sequence by non-int of type 'float'
说明:
enumerate('abcd') --> (0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')
reversed('abcd') --> 'd', 'c', 'b', 'a'
什么是ascii码?你想达到什么目标?请拿起,仔细阅读,并提供一个重现您问题的答案。@HiroProgator我认为op是在尝试将二进制转换为十进制
11111111到255
我的观点是:试图回答问题的人不必猜测。。。“应该有一个明确的问题陈述。”主角肯定。但我不想为他们做整件事。OP显然只是一个初学者。如果他没有简单地将异常隐藏为except
,他也会得到无限的索引器的“循环”:字符串索引超出范围
感谢快速响应:D现在要重新编写我的代码了。刚才注意到你没有定义结果。你是说print(bin_num)吗?@Prometheus对不起,result
是我以前使用的名字,应该是bin_num
。
enumerate('abcd') --> (0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')
reversed('abcd') --> 'd', 'c', 'b', 'a'