我有點好奇,爲什麼要在base64上使用十六進制編碼。在我看來,基地64更有效率。特別是,爲什麼數據庫似乎總是使用十六進制編碼?這是一個歷史問題,還是我錯過了十六進制編碼的東西?二進制數據的十六進制編碼的目的是什麼?
回答
你必須是一個真正的極客,在屏幕上閱讀BASE64
。
在Oracle
,當我運行HEXTORAW
,我能得到一個什麼樣的RAW
領域的一些想法,但我不能BASE64
。比如,當我看到很多0x3F
的時候,我知道有一些編碼。
而在內部,這些只是二進制字節,沒有其他需要對它們進行編碼,而是顯示給屏幕另一側的人。
我想你的數據庫是真的存儲數據爲二進制,但查詢編輯器將顯示它使用十六進制編碼。這是SQL Server查詢分析器將執行的操作。
我想這僅僅是個人喜好的問題......十六進制是迄今爲止我更容易閱讀,然後在Base32或Base64
東西它是有效的空間利用和可讀性之間的良好折衷。位模式在十六進制中變得非常明顯,而其他基地則不太清楚。
這是更容易閱讀,0x8080或32896?我會說十六進制值是。
它也有每個十六進制數字相當於一個半字節(因此每對等於一個字節)的好的屬性。
要容易得多,使進制的感覺在你的腦袋比基地64
至於數據庫,以及牢記之間存在數據的顯示,它是如何存儲的差異。這很可能只是將數據顯示爲十六進制。
如果您想將結果值用作Windows上的文件名,Base64不起作用,因爲base64同時使用大寫和小寫字母。我敢肯定還有其他時候,由於類似原因無法使用它。
同意其他有關可讀性的答案 - 十六進制數字在8位字節上很好地對齊,而base64「數字」沒有,並且一個數字可以包含兩個字節的一部分。
有點像角落的情況,但不要使用base64完全一樣。 – 2009-10-10 19:36:17
對於字符串存儲(帶有「潛在的」XML安全編碼),使用ASCII 85可以獲得更高的效率,因爲它是5/4膨脹而不是base64的4/3。
但是,「讀」base64甚至更難。並且很多應用程序經常支持它,所以您必須編寫自己的類/函數來執行編碼和解碼。
- 1. 什麼是十六進制?
- 2. 獲得負數的二進制補碼的十六進制
- 3. 爲什麼typeof十六進制數或二進制數Uint64,而十進制數的類型是Int64?
- 4. UCS2十六進制編碼
- 5. O_APPEND的十六進制值是什麼?
- 6. 十六進制,八進制,二進制到十進制(C++)
- 7. Python中十六進制數的二進制補碼
- 8. Clojure等價於Python的編碼('十六進制')和解碼('十六進制')
- 9. 十六進制轉換爲二進制
- 10. Python二進制到多十六進制
- 11. 二進制到十六進制轉換
- 12. 大十六進制到二進制
- 13. 十六進制到二進制轉換
- 14. 將帶符號的十進制轉換爲使用二進制補碼編碼的十六進制
- 15. 十六進制爲二進制形式,需要說明什麼?
- 16. 十進制/十六進制/二進制轉換
- 17. 十六進制爲二進制和十進制在matlab中
- 18. 爲什麼printf自動將%x%o%d轉換爲十六進制十六進制和十二進制
- 19. 表示二進制補碼的十六進制值
- 20. 有符號整數到二進制補碼十六進制
- 21. 將十進制轉換爲十六進制和十六進制
- 22. Python中的二進制到十六進制,低半字節的第一編碼
- 23. 十六進制到十二進制轉換(帶sed的管道)
- 24. 如何轉換OCaml中十六進制,十進制,十進制和二進制數之間的數字?
- 25. 如何十六進制或十進制轉換爲二進制目標C
- 26. 選擇一個十六進制附近的十六進制數
- 27. 如何插入十六進制/二進制?成mysql數據庫?
- 28. 將填充添加到十六進制的目的是什麼?
- 29. 解碼十六進制(?)數據包
- 30. 將十六進制轉換爲二進制和16位二進制補碼
如果您需要通過ASCII發送某個地方,將其解碼回二進制並使用,則只需將其轉換爲base64即可。 – 2009-07-06 08:08:03