Python:ValueError:int()的基数为2的无效文字:'1001001 1101101 ...“

问题描述 投票:-1回答:1

我的XOR接受两个位串并返回这两个字符串的XOR值。我不认为getXor函数正在读取bitstring作为整数,我已经尝试进行更改,但我不确定我的努力没有奏效。

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:int()的基数为2的无效文字:'1001001 1101101 1110000 1100101 1100001 1100011 1101000 1101101 1100101 1101110 1110100'

我该如何解决?

python bitstring
1个回答
0
投票

你需要删除空格,尝试a.replace('','')和b相同。

© www.soinside.com 2019 - 2024. All rights reserved.