python中的md5十六进制到二进制
我读了很多关于在SO中将十六进制转换为二进制的答案。我尝试用md5实现它:python中的md5十六进制到二进制,python,binary,hex,md5,Python,Binary,Hex,Md5,我读了很多关于在SO中将十六进制转换为二进制的答案。我尝试用md5实现它: import hashlib c = hashlib.md5("123hello123".encode('ascii')) print(c.hexdigest()) for _hex in c.hexdigest(): _hex = int(_hex, 16) print(bin(_hex)[2:], end="") 我得到输出: b303fa684382db471658016690101792 10
import hashlib
c = hashlib.md5("123hello123".encode('ascii'))
print(c.hexdigest())
for _hex in c.hexdigest():
_hex = int(_hex, 16)
print(bin(_hex)[2:], end="")
我得到输出:
b303fa684382db471658016690101792
101111011111111010110100010011100010110110111001111110101100001110100101011111001100110
当我在在线转换器中转换时,我得到:
1011001100000011111101001101000010110000010110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
正确答案是什么?如何更正程序?bin函数不包含前导零,而每个十六进制字符始终表示4个二进制数字<代码>二进制(_hex)[2:].rjust(4,“0”)可以工作。您使用的是什么在线转换器?您需要将每个十六进制数字的二进制表示形式填充到4个字符。这两个结果看起来都错了。你从转换器中得到的一个转换成
B303FA684382D80000000000000000
。当你这样做的时候,你可以完全跳过这个循环,只需在整个十六进制摘要上调用bin
:print(bin(int(c.hexdigest(),16))[2:.rjust(128,“0”)
@Kevin,这是值得单独回答的问题。