我想將散列存儲爲二進制(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。 –