Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 二进制数到ASCII数转换器不工作(PyVersion 3.6.4)_Python - Fatal编程技术网

Python 二进制数到ASCII数转换器不工作(PyVersion 3.6.4)

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

我试图编写一个程序,将二进制数转换为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
  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'