首页 > 解决方案 > 该函数应该从二进制列表中返回一个字符,但我得到“invalid literal for int() with base 2”

问题描述

def binToChar(b):

    a=','.join([str(i) for i in b])
    a = int(a, 2)
    if a < 26:
        return chr(ord('A')+a)
    elif a < 52:
        return chr(ord('a')+a-26)
    elif a < 62:
        return chr(ord('0')+a -52)
    else:
        if a == 62 :
            return "+"
        if a == 63:
            return "/"


print(binToChar([1,0,1,0,1,0]))

Traceback(最近一次调用最后一次):文件“C:/Users/PycharmProjects/assignment1/venv/tester.py”,第 46 行,在 print(binToChar([1,0,1,0,1,0])) 文件中“C:/Users/PycharmProjects/assignment1/venv/tester.py”,第 23 行,在 binToChar a = int(a, 2) ValueError:int() 的无效文字,基数为 2:'1,0,1,0 ,1,0'

标签: python-3.xfunction

解决方案


该消息确切地告诉您出了什么问题:“1,0,1,0,1,0”不是以 2 为底的有效数字。您需要“101010”。

为此,改变

a=','.join([str(i) for i in b])

a=''.join([str(i) for i in b])

推荐阅读