如何在Python中将任何单词转换为整数

时间:2018-06-29 12:19:15

标签: python list encryption data-conversion

是否有可能将任何单词转换为python中的整数形式的任何单词。

乍一看这似乎完全是愚蠢的,是不可能的,但是如果您看一看,这是一个很好的问题,因为我已经苦苦挣扎了很长时间。

是的,我尝试了许多其他方式,例如使用列表将不同的整数存储到其对应的字母。进行得不太顺利。

2 个答案:

答案 0 :(得分:1)

您可以在素数(2,3,5,7,...)到字母表中的所有字符(a,b,c,d,e,...)之间创建映射。然后,将单词中字符的位置映射到下一个更大的质数。

然后,将字符值与位置值相乘并加总:

示例:

alphabet = {"a":2, "b":3, "1":5, "2":7 }
position = [11,13,17,19,23,29,31]
text = "aabb12a"

def encode(t):
    """Throws error when not map-able"""
    return sum(alphabet[x] * position[pos] for pos,x in enumerate(t))


for i in alphabet:
    print(i,"=>",encode(i))

print(encode(text))

输出:

('a', '=>', 22)
('1', '=>', 55)
('2', '=>', 77)
('b', '=>', 33)
536 

要反转数字,您必须进行素数分解,以较大的数字升序排序求和的求和值,然后反转字母的映射。

在这种情况下,您会得到:

536 = 2*11 + 2*13 + 3*17 + 3*19 + 5*23+ 7*29 + 2*31

您可以查找位置和字符来重建单词。

给出128个字符(ascii)和最多50个字符的单词,您将获得 big 数字。...

答案 1 :(得分:-1)

您可以使用内置的hash函数:

>>> hash('hello')
-8733837932593682240