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 也是如此。
我的 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 也是如此。