Python: ValueError: недопустимый литерал для int () с основанием 2: «1001001 1101101 ....» - PullRequest
0 голосов
/ 21 февраля 2019

Мой XOR принимает две строки битов и возвращает значение XOR этих двух строк.Я не думаю, что функция getXor считывает цепочку битов как целые числа, и я пытался внести изменения, но я не уверен, где, поскольку ни одно из моих усилий не сработало.

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'

Как это исправить?

1 Ответ

0 голосов
/ 21 февраля 2019

Вам нужно удалить пробел, попробуйте a.replace ('', '') и то же самое для b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...