python 生成字符串_在Python中从字符串生成ID

1586010002-jmsa.png

I'm struggling a bit to generate ID of type integer for given string in Python.

I thought the built-it hash function is perfect but it appears that the IDs are too long sometimes. It's a problem since I'm limited to 64bits as maximum length.

My code so far: hash(s) % 10000000000.

The input string(s) which I can expect will be in range of 12-512 chars long.

Requirements are:

integers only

generated from provided string

ideally up to 10-12 chars long (I'll have ~5 million items only)

low probability of collision..?

I would be glad if someone can provide any tips / solutions.

解决方案

I would do something like this:

>>> import hashlib

>>> m = hashlib.md5()

>>> m.update("some string")

>>> str(int(m.hexdigest(), 16))[0:12]

'120665287271'

The idea:

Calculate the hash of a string with MD5 (or SHA-1 or ...) in hexadecimal form (see module hashlib)

Convert the string into an integer and reconvert it to a String with base 10 (there are just digits in the result)

Use the first 12 characters of the string.

If characters a-f are also okay, I would do m.hexdigest()[0:12].

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值