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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Base编码系列

發(fā)布時間:2024/3/13 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Base编码系列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Base編碼系列: Base64 Base32 Base16
我們以Base編碼為例。

Base64編碼是使用64個可打印的ASCII字符(A-Z、a-z、0-9、+、/)將任意字節(jié)序列數(shù)據(jù)編碼成ASCII字符串。另有"="符號用作后綴用途。


Base64將輸入字符串按字節(jié)切分,取得每個字節(jié)對應(yīng)的二進(jìn)制值(若不足8比特則高位補(bǔ)0),然后將這些二進(jìn)制數(shù)值串聯(lián)起來,再按照6比特一組進(jìn)行切分(因為2^6=64),最后一組若不足6比特則末尾補(bǔ)0。將每組二進(jìn)制值轉(zhuǎn)換成十進(jìn)制,然后在上述表格中找到對應(yīng)的符號并串聯(lián)起來就是Base64編碼結(jié)果。

由于二進(jìn)制數(shù)據(jù)是按照8比特一組進(jìn)行傳輸,因此Base64按照6比特一組切分的二進(jìn)制數(shù)據(jù)必須是24比特的倍數(shù)(6和8的最小公倍數(shù))。24比特就是3個字節(jié),若原字節(jié)序列數(shù)據(jù)長度不是3的倍數(shù)時且剩下1個輸入數(shù)據(jù),則在編碼結(jié)果后加2個=;若剩下2個輸入數(shù)據(jù),則在編碼結(jié)果后加1個=。

完整的Base64定義可見RFC1421和RFC2045。因為Base64算法是將3個字節(jié)原數(shù)據(jù)編碼為4個字節(jié)新數(shù)據(jù),所以Base64編碼后的數(shù)據(jù)比原始數(shù)據(jù)略長,為原來的4/3。在電子郵件中,根據(jù)RFC822規(guī)定,每76個字符,還需要加上一個回車換行。可以估算編碼后數(shù)據(jù)長度大約為原長的135.1%。

Base64可用于任意數(shù)據(jù)的底層二進(jìn)制數(shù)據(jù)編碼,以應(yīng)用于只能傳輸ASCII字符的場合。不過最常用于文本數(shù)據(jù)的處理傳輸,例如在MIME格式的電子郵件中,Base64可以用來編碼郵件內(nèi)容,方便在不同語言計算機(jī)間傳輸而不亂碼,注意是傳輸而不是顯示,例如在西歐地區(qū)計算機(jī)上使用utf-8編碼即可正常顯示中文(安裝有對應(yīng)字庫),但是它未必能正常傳輸中文,這時轉(zhuǎn)換為Base64便無此顧慮。

Base64編碼若無特別說明,通常約定非ASCII字符按照UTF-8字符集進(jìn)行編碼處理。

總結(jié)

以上是生活随笔為你收集整理的Base编码系列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。