受到XKCD geohashing漫画(http://imgs.xkcd.com/comics/geohashing.png)的启发,我想我已经开始用Python编写生成器了。不过我已经遇到了一个主要部分:转换为MD5然后转换为十进制。
是否可能?
答案 0 :(得分:5)
编辑:查看漫画后,这是XKCD geohashing更完整的解决方案:
>>> md5 = hashlib.md5('2005-05-26-10458.68').hexdigest() # get MD5 as hex string
>>> float.fromhex('0.' + md5[:16]) # first half as float
0.85771326770700229
>>> float.fromhex('0.' + md5[16:]) # second half as float
0.54454306955928211
以下是“转换为MD5然后转换为十进制”的更一般的答案:
假设您想要字符串'hello world'
的十进制MD5,您可以使用以下内容:
>>> int(hashlib.md5('hello world').hexdigest(), 16)
125893641179230474042701625388361764291L
hash.hexdigest()
函数返回十六进制字符串,int(hex_str, 16)
是convert a hexadecimal string to a decimal的结果。
答案 1 :(得分:1)
使用int('db931', 16)
将十六进制(base-16)字符串db931
转换为十进制。
答案 2 :(得分:1)
这是一条线索 - 这会编码the example image并生成您在那里找到的数字。
>>> from hashlib import md5
>>> hash = md5("2005-05-26-10458.68").hexdigest()
>>> hash
'db9318c2259923d08b672cb305440f97'
>>> int(hash[:16],16)/16.**16
0.8577132677070023
>>> int(hash[16:],16)/16.**16
0.5445430695592821
>>>