Python 解码错误:解密时Int太大,无法转换
我在python中以以下方式将字符串编码为整数:Python 解码错误:解密时Int太大,无法转换,python,ascii,Python,Ascii,我在python中以以下方式将字符串编码为整数: b = bytearray() b.extend(input_number_or_text.encode('ascii')) input_number_or_text = int.from_bytes(b,byteorder='big', signed=False) 我加密这个整数以获得一个新值,然后解密以返回原始整数 现在如何从整数中获取字符串 我尝试了以下解密方法: decrypted_data.to_bytes(1,byteorder='
b = bytearray()
b.extend(input_number_or_text.encode('ascii'))
input_number_or_text = int.from_bytes(b,byteorder='big', signed=False)
我加密这个整数以获得一个新值,然后解密以返回原始整数
现在如何从整数中获取字符串
我尝试了以下解密方法:
decrypted_data.to_bytes(1,byteorder='big').decode('ascii')
但是我得到的int太大,无法转换错误
如何解决此问题?整数的字节表示形式不同于字符串
例如-1
,'1'
,1.0
在查看字节表示时,所有这些看起来都不同
根据您提供的代码-
b.extend(输入数字或文本编码('ascii'))
和int.from_字节(b,byteorder='big',signed=False)
似乎你在编码一个数字字符串,并试图将其解码为int
请参见下一个示例:
In [3]: b = bytearray()
In [4]: a = '1'
In [5]: b.extend(a.encode('ascii'))
In [6]: int.from_bytes(b,byteorder='big',signed=False)
Out[6]: 49
如果要对字符串进行编码,应首先对字符串进行解码,然后转换为int
In [1]: b = bytearray()
In [2]: a = '123'
In [3]: b.extend(a.encode('ascii'))
In [4]: decoded = int(b.decode('ascii'))
In [5]: decoded
Out[5]: 123
您告诉它,int
应该可以转换为长度为1字节的字符串。如果时间再长,那就不行了。您可以记住长度,也可以猜测长度:
num_bytes = (decrypted_data.bit_length() + 7) // 8
decrypted_data.to_bytes(num_bytes, byteorder='big').decode('ascii')
添加7和楼层除以8可确保数据有足够的字节。(在Python上速度稍微快一点),但看起来更神奇一点