我想将散列存储为二进制(64字节)。但是对于任何类型的API(Web服务),我都想将它们作为字符串传递。 hashlib.hexdigest()
会给我一个字符串,而hashlib.digest()
会给我的二进制。但是,例如,如果我从磁盘读取二进制版本,我将如何将其转换为字符串?如果我从Web服务读取字符串,我将如何将其转换为二进制文件?如何从十六进制翻译为摘要,反之亦然?
4
A
回答
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
4
3
在2.x中,您可以使用str.decode('hex')
和str.encode('hex')
在原始字节和十六进制字符串之间进行转换。在3.x中,您需要使用binascii
模块。
相关问题
- 1. 转换字符串为十六进制,反之亦然
- 2. 转换十六进制为INT,反之亦然
- 3. C++转换UTF8字符串为十六进制,反之亦然
- 4. 六十进制到的Vector3,反之亦然
- 5. 转换UUID以十六进制字符串,反之亦然
- 6. 如何将字符串转换为十六进制,反之亦然c?
- 7. 如何将字符串转换为十六进制,反之亦然?
- 8. 十六进制翻译
- 9. 如何将十进制转换成二进制,反之亦然
- 10. 将ASCII转换为十六进制,反之亦然 - 奇怪问题
- 11. 将十六进制转换为浮点数并反之亦然C
- 12. 将字符串转换为十六进制字符串,反之亦然在Vb.Net
- 13. 理解类值(翻译十六进制转换为十进制)
- 14. 十进制到二进制(反之亦然)
- 15. 编码/解码来自INT 14位到十六进制,并且反之亦然
- 16. 从.txt导入并转换为十六进制,然后出口,反之亦然C++
- 17. Java或C#六十进制/十进制转换,反之亦然,最好的方法是什么?
- 18. Arduino从基准十二转换为十基数,反之亦然
- 19. 十进制转换为二进制的转换,反之亦然在Python
- 20. PIC的十六进制反编译器
- 21. 如何将文本键转换为Django中的十六进制和反之亦然?
- 22. 长[]要长[],反之亦然?
- 23. 将MD5/SHA1哈希从二进制转换为十六进制摘要
- 24. 从传递参数中十六进制摘要
- 25. 将Rails Net :: HTTP请求转换为MD5十六进制摘要
- 26. 在Ruby中将十六进制摘要转换为base64
- 27. 翻译包含二进制值,以十六进制
- 28. 如何十六进制转换为十六进制
- 29. 将十进制转换为十六进制和十六进制
- 30. i18下一个翻译显示为unicode十六进制字符
这个例子用Python 3.x显示 –
澄清:'hashlib.m d5(b'hello world)。hexdigest()。decode('hex')== hashlib.md5(b'hello world)。digest()' – Ben
@Ben非常感谢。这节省了我很多时间。我正在研究aws s3,并试图找出如何从字符串 - >二进制 - >字符串发生ETag转换。网上有很多答案,但没有任何工作对我来说。但是当我尝试你的答案时,它工作得很好。所以谢谢你alotttttt。 –