我想将哈希值存储为二进制(64字节)。但对于任何类型的API(Web服务),我都希望将它们作为字符串传递。 hashlib.hexdigest()
会给我一个字符串,hashlib.digest()
会给我二进制文件。但是,例如,如果我从磁盘读取二进制版本,我将如何将其转换为字符串?如果我从Web服务中读取字符串,我将如何将其转换为二进制文件?
答案 0 :(得分:7)
答案 1 :(得分:4)
在2.x中,您可以使用str.decode('hex')
和str.encode('hex')
在原始字节和十六进制字符串之间进行转换。在3.x中,您需要使用binascii
模块。
答案 2 :(得分:4)
您可以从字符串版本开始传递并显示:
>>> import hashlib
>>> string_version = hashlib.md5(b'hello world').hexdigest()
将其转换为二进制文件以将其写入磁盘:
>>> save_as_binary = string_version.encode('utf-8')
>>> print(save_as_binary)
b'5eb63bbbe01eeed093cb22bb8f5acdc3'
从磁盘读回时,将其转换回字符串:
>>> back_to_string = save_as_binary.decode('utf-8')
>>> print(back_to_string)
5eb63bbbe01eeed093cb22bb8f5acdc3