Python比较两个十六进制值
我正在使用Python的md5库来对我的名字和一系列随机数进行哈希处理,这个过程是在一个Map Reduce程序中进行的。我想知道md5生成的哈希值的十六进制输出是否有至少5个前导0。md5的输出是一个长度为32的字符串,表示这个哈希值。我不太确定怎么把这个字符串和一个十六进制值进行比较。
我知道我需要一个十六进制值来进行比较,同时还需要一种方法把哈希输出转换成十六进制值。
我觉得要比较的十六进制值应该是0x00000100000000000000000000000000
(也就是前面有31个0,第5位是1)?但我不太确定在Python中怎么表示这个值。
另外,我该怎么把十六进制字符串转换成实际的十六进制值呢?
这是我从程序中打印出来的一些结果:
10ad52a892674c28ad1de4343e79c232
582d84d589a5fd57df22a8449ac70329
dda932d448b07d048f7e52be4a8234db
04e982c9890a402e248a6e5ef07c9ac4
a86bf64393f1c494a8ac3520c0abf29a
2 个回答
0
要把十六进制字符串转换成整数值,你可以使用 int
函数,只需要指定进制就可以了:
>>> int("10ad52a892674c28ad1de4343e79c232", 16)
22167591802313671423113693555584516658
1
为什么不直接用字符串比较呢,就像这样
if digest.hexdigest()[:5] == '0' * 5:
# ...
这里的 digest
是一个MD5摘要对象。