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