我想在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'
答案 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位。