如何从python中的字符串生成13位数字

时间:2015-10-23 06:12:01

标签: python

我想在python中创建条形码报告,我正在使用reportlab。我可以从13位数字生成EAN13条形码。

如何从任何字符串生成13位数字,以便每次使用相同的字符串时生成相同的数字。

e.g。

str1 = 'abcxyz123'
## do something on str1
## a 13 digit number is generated e.g. 2134332512345 is generated everytime when string is 'abcxyz123'

1 个答案:

答案 0 :(得分:3)

您只需使用hashLib作为:

import hashlib

str1 = 'abcxyz123'
str2 = 'abcxyzhjk'
str3 = 'abcxyz123'

hash1 = hashlib.sha1()
hash1.update(str1)
print str(int(hash1.hexdigest(), 16))[:13]
>>> 2655706373072

hash2 = hashlib.sha1()
hash2.update(str2)
print str(int(hash2.hexdigest(), 16))[:13]
>>> 1219934364452

hash3 = hashlib.sha1()
hash3.update(str3)
print str(int(hash3.hexdigest(), 16))[:13]
>>> 2655706373072

hash.hexdigest()返回十六进制值,可以使用int(hex, 16)轻松转换为整数,然后仅通过将整数转换为str()然后对字符串进行切片将整数限制为13位。