1
我在Python中为给定的string
生成ID类型integer
挣扎了一下。从Python中的字符串生成ID
我认为它的内置hash
功能是完美的,但它似乎有时候ID太长。这是一个问题,因为我将最大长度限制在64位。
我的代码到目前为止:hash(s) % 10000000000
。 我期望的输入字符串将在12-512个字符的范围内。
的要求是:只能从提供的字符串生成
- 整数(我只〜500万个产品)
- 的概率低碰撞..?
我会很高兴,如果有人可以提供任何提示/解决方案。
谢谢,它看起来不错!它不返回整数,但它只是将其重新转换为int。如果我们可以用int/str/int coerce舞蹈离开,会很好。任何想法? :) – mlen108
m.hexdigit()提供一个32个字符的字符串。所以最大值是'''f'* 32'',有39个数字(=''len(str(int('f'* 32,16)))'')。所以你最后可以分1E17。有了这个解决方案,碰撞可能更可能......但我没有想到它...... –
m.hexdigit()提供了m.digest_size * 2个字符(这可能会改变,这取决于希望使用的散列函数) –