Python: ValueError: invalid literal for int() with base 2: '1001001 1101101 ...."

Python: ValueError: invalid literal for int() with base 2: '1001001 1101101 ...."

我的 XOR 接受两个位串和 returns 这两个字符串的 XOR 值。我不认为 getXor 函数将位串读取为整数,我已经尝试进行更改,但我不确定 none 我的努力在哪里奏效。

import random

def getCaesar(message, key):
    enc = ""
    for char in message: 
        if char == ' ':
            enc = enc + char
        elif  char.isupper():
            enc = enc + chr((ord(char)+key-65)%26+65)
        elif char.islower():
            enc = enc + chr((ord(char) + key - 97) % 26 + 97)
        else:
            enc = enc +chr((ord(char) + key - 33) % 32 + 33)

    return enc

def getBinary(bitstr):
    bit=' '.join(format(ord(char), 'b') for char in bitstr)
    return bit

def getBitstr(k):
    result=""
    for num in range(0,k):
        result=''.join(str(random.randint(0,1))for num in range(k))
    return result

def getXor(a,b):
    result = int(a,2) ^ int(b,2)
    return '{0:b}'.format(result)


f=open("NoWar.txt", mode="r")
l=f.read()

binary=getBinary(l)
a=str(binary)
size=len(binary)
key=getBitstr(size)
b=str(key)
x=getXor(a,b)


cipher=getCaesar(key,4)
cipher="".join(cipher)
cipherF=open("ciphertext.txt", mode="w")
cipherF.write(cipher)
cipherF.close()

错误提示:

result = int(a,2) ^ int(b,2)

出现错误:ValueError:对于基数为 2 的 int() 无效文字:'1001001 1101101 1110000 1100101 1100001 1100011 1101000 1101101 1100101 1101110 1110100'

我该如何解决这个问题?

您需要删除空格,请尝试 a.replace(' ', '') 对 b 也是如此。