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