我是这个领域的新手,你能帮我一下吗?我的密码文本(encrypt3)中的每一个字节都被解释为0到255之间的整数。对于Plaintext=Ciphertext -100 (mod 256),每个字节被解释为整数。在下面的代码中,我有错误: newbyte=c.to_bytes(1,byteorder=sys.byteorder,signed=False) OverflowError:无法将负int转换为无符号帮助将不胜感激。
import sys
f=open("encrypt3.dat","rb")
s=f.read(100)
d=bytearray(s)
print (len(d))
strnew=''
newbyte=b''
for c in d :
c=c-100 % 256
newbyte=c.to_bytes(1,byteorder=sys.byteorder,signed=True)
strnew=strnew + newbyte.decode('latin1')
print(strnew)发布于 2016-12-13 01:42:50
模运算符(%)是在减法运算符(-)之前处理的,所以您的语句c=c-100 % 256等效于c=c-(100 % 256),或者仅仅是c=c-100 (因为100 % 256 == 100)。因此,每当您的代码遇到小于100 (='d')的字符时,它就会崩溃。
您可以通过将c=c-100 % 256更改为c=(c-100) % 256来修复此问题。
读一读Python 3中的运算符优先。
https://stackoverflow.com/questions/41111761
复制相似问题