如何将任意字符串转换为唯一的整数,这在Python会话和平台上是相同的?例如hash('my string'),因为为每个Python会话和平台返回不同的值,所以不起作用.
Ign*_*ams 32
使用哈希算法,如MD5或SHA1,然后转换hexdigest通道int():
>>> import hashlib
>>> int(hashlib.md5('Hello, world!').hexdigest(), 16)
144653930895353261282233826065192032313L
Run Code Online (Sandbox Code Playgroud)
如果散列函数确实不适合您,您可以将字符串转换为数字.
my_string = 'my string'
def string_to_int(s):
ord3 = lambda x : '%.3d' % ord(x)
return int(''.join(map(ord3, s)))
In[10]: string_to_int(my_string)
Out[11]: 109121032115116114105110103L
Run Code Online (Sandbox Code Playgroud)
通过映射每个三元组,这是可逆的chr.
def int_to_string(n)
s = str(n)
return ''.join([chr(int(s[i:i+3])) for i in range(0, len(s), 3)])
In[12]: int_to_string(109121032115116114105110103L)
Out[13]: 'my string'
Run Code Online (Sandbox Code Playgroud)