Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解码错误:解密时Int太大,无法转换_Python_Ascii - Fatal编程技术网

Python 解码错误:解密时Int太大,无法转换

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='

我在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='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上速度稍微快一点),但看起来更神奇一点