我在Python中为给定的integer
生成string
类型的ID而苦苦挣扎。
我认为内置hash
功能非常完美,但有时候ID似乎太长了。这是一个问题,因为我的最大长度限制为64位。
到目前为止我的代码:hash(s) % 10000000000
。
我可以期待的输入字符串将在12-512个字符长的范围内。
要求是:
如果有人可以提供任何提示/解决方案,我会很高兴。
答案 0 :(得分:5)
我会做这样的事情:
>>> import hashlib
>>> m = hashlib.md5()
>>> m.update("some string")
>>> str(int(m.hexdigest(), 16))[0:12]
'120665287271'
这个想法:
如果字符a-f
也可以,我会m.hexdigest()[0:12]
。
答案 1 :(得分:0)
如果不允许您添加额外的依赖项,则可以通过以下方式继续使用hash
函数:
>>> my_string = "whatever"
>>> str(hash(my_string))[1:13]
'460440266319'
NB:
hash
可能为同一字符串返回不同的值,因为PYTHONHASHSEED
的值将在每次运行程序时更改。您可能需要将其设置为某个固定值。 Read here