日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西

發布時間:2024/7/5 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UTF-8的問題在于它不是最節省空間的編碼 . 此外,一些隨機二進制字節序列是無效的UTF-8編碼 . 因此,您不能將隨機二進制字節序列解釋為某些UTF-8數據,因為它將是無效的UTF-8編碼 . 這種對UTF-8編碼的約束的好處在于它使得它很可靠并且可以定位多字節字符開始和結束我們開始查看的任何字節 .

因此,如果在[0..127]范圍內編碼字節值只需要UTF-8編碼中的一個字節,則編碼[128..255]范圍內的字節值將需要2個字節!比那更糟糕 . 在JSON中,控制字符“和\”不允許出現在字符串中 . 因此二進制數據需要進行一些轉換才能正確編碼 .

讓我們看看 . 如果我們在二進制數據中假設均勻分布的隨機字節值,那么平均來說,一半字節將在一個字節中編碼,另一半在兩個字節中編碼 . UTF-8編碼的二進制數據將具有初始大小的150% .

Base64編碼僅增長到初始大小的133% . 所以Base64編碼效率更高 .

那么使用其他Base編碼呢?在UTF-8中,對128個ASCII值進行編碼是最節省空間的 . 在8位中,您可以存儲7位 . 因此,如果我們以7位塊的形式剪切二進制數據以將它們存儲在UTF-8編碼字符串的每個字節中,則編碼數據將僅增長到初始大小的114% . 比Base64好 . 不幸的是,我們不能使用這個簡單的技巧,因為JSON不允許一些ASCII字符 . ASCII([0..31]和127)的33個控制字符和“和\”必須被排除 . 這使得我們只有128-35 = 93個字符 .

因此理論上我們可以定義一個Base93編碼,它將編碼大小增加到8 / log2(93)= 8 * log10(2)/ log10(93)= 122% . 但Base93編碼不如Base64編碼方便 . Base64需要以6位塊的形式剪切輸入字節序列,以便簡單的按位運算 . 除133%外,不超過122% .

這就是我獨立得出的結論,即Base64確實是用JSON編碼二進制數據的最佳選擇 . 我的回答是一個為它辯護 . 我同意從性能的角度來看它并不是很有吸引力,但也要考慮使用JSON的好處,它的人類可讀字符串表示易于在所有編程語言中操作 .

如果性能至關重要,則應將純二進制編碼視為JSON的替代 . 但是對于JSON,我的結論是Base64是最好的 .

總結

以上是生活随笔為你收集整理的java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。