Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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
在python3.6中如何将字符串转换为唯一整数,反之亦然(0到255之间)_Python_String_Python 3.x_Integer_Unique - Fatal编程技术网

在python3.6中如何将字符串转换为唯一整数,反之亦然(0到255之间)

在python3.6中如何将字符串转换为唯一整数,反之亦然(0到255之间),python,string,python-3.x,integer,unique,Python,String,Python 3.x,Integer,Unique,我想把一个刺变成这样: input_str = "send_message" 在0到255之间的唯一整数,以及在解码唯一整数时,这将返回到相同的字符串send_message。 如何进行这种转换?我应该将唯一整数保存到json文件中吗?这通常是不可能的 从您的示例来看,您似乎希望允许字符串包含小写字母字符和/或下划线字符。这意味着每个角色有27个选择。这意味着有27 x 27=729个可能的两个字符串。您无法将729种不同的可能性放入0和255之间的整数中,并保持它们的唯一性。将有一些冲突产生

我想把一个刺变成这样:

input_str = "send_message"
在0到255之间的唯一整数,以及在解码唯一整数时,这将返回到相同的字符串send_message。
如何进行这种转换?我应该将唯一整数保存到json文件中吗?

这通常是不可能的

从您的示例来看,您似乎希望允许字符串包含小写字母字符和/或下划线字符。这意味着每个角色有27个选择。这意味着有27 x 27=729个可能的两个字符串。您无法将729种不同的可能性放入0和255之间的整数中,并保持它们的唯一性。将有一些冲突产生相同的结果。因此,您无法将整数解码为确定的字符串


当然,这会随着字符串变长而变得更糟。

因为只有256个不同的整数,所以只能有256个不同的字符串,一种方法是将字符串存储在列表中。当您想要构造JSON文件时,在列表中查找字符串并在JSON文件中使用其索引。读取传入的JSON文件时,使用其中的索引从列表中检索正确的字符串。

它可能没有什么实际意义,但一次过构建一个来回映射可散列对象和基于0的连续索引的单一结构的有趣方法是以下defaultdict:


hashinput_str%256。此函数的逆运算是不可能的。@Elmex80s非常感谢您的帮助,我也需要您的帮助response@ory-道尔顿:谢谢,我可以问你如何计算27个选项吗?@Mojtabarvin:字母表中有26个字母,a到z,加上一个下划线。那是27。假设您不需要空格、其他标点符号或大小写区别。
from collections import defaultdict
d = defaultdict(lambda: len(d) // 2)
for s in map(str, range(256)):
    d[d[s]] = s

>>> d['3']
3
>>> d[3]
'3'