欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Base64編碼的深入認識與理解

 更新時間:2017年03月07日 14:18:42   作者:viclee108  
這篇文章主要介紹了Base64編碼的深入認識與理解的相關(guān)資料,需要的朋友可以參考下

Base64編碼的深入認識與理解

  之前在很多業(yè)務(wù)中都有見過或者用到過Base64編碼,但一直一知半解,沒有對它有一個深入的認識和理解。今天就來聊一聊Base64編碼的問題。

       首先要明確的是,Base64是一種可逆的編碼方式,提到編碼方式,我們首先想到的肯定是Ascii、GBK、Unicode這些常用的編碼方法,那么Base64與這些編碼方式有什么不同呢?

       簡單來將,Base64就是一種用64個Ascii字符來表示任意二進制數(shù)據(jù)的方法。主要用于將不可打印的字符轉(zhuǎn)換成可打印字符,或者簡單的說將二進制數(shù)據(jù)編碼成Ascii字符。Base64是網(wǎng)絡(luò)上最常用的傳輸8bit字節(jié)數(shù)據(jù)的編碼方式之一。

       Base64的原理其實很簡單,首先,需要準備一個包含64個字符的表格(如下表),0~63分別對應(yīng)了唯一一個字符,比如18對應(yīng)的是S。

       然后,對二進制數(shù)據(jù)進行處理,每3個字節(jié)一組,一共3x8=24bit,將這24bit劃分為4組,每組正好6個bit,6bit的數(shù)據(jù)剛好可以表示0~63的范圍,也就可以對應(yīng)上表的64個字符。這樣我們就得到了4個數(shù)字作為索引,然后查表獲得相應(yīng)的4個字符,就得到了編碼后的字符串。下表將整個處理的過程描述的很清楚。

文本 M a n
ASCII編碼 77 97 110
二進制位 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
索引 19 22 5 46
Base64編碼 T W F u

        所以,Base64編碼會把3字節(jié)的二進制數(shù)據(jù)編碼為4字節(jié)的文本數(shù)據(jù),長度增加為原來的4/3。如果要編碼的二進制數(shù)據(jù)不是3的倍數(shù),最后會剩下1個或2個字節(jié)怎么辦?此時,需在原數(shù)據(jù)后面添加1個或2個零值字節(jié),使其字節(jié)數(shù)是3的倍數(shù)。然后,在編碼后的字符串后面添加1個或2個等號“=”,表示所添加的零值字節(jié)數(shù)。解碼的時候,會自動去掉。

       下面來看一下Base64編碼的優(yōu)缺點。

        優(yōu)點:可以將二進制數(shù)據(jù)轉(zhuǎn)換成可打印字符,方便傳輸數(shù)據(jù);對數(shù)據(jù)進行簡單的加密,肉眼安全。

        缺點:內(nèi)容編碼后的體積會變大,編碼和解碼需要額外的工作量。

       它的使用場景有很多,比如將圖片等資源文件以Base64編碼形式直接放于代碼中,使用的時候反Base64后轉(zhuǎn)換成Image對象使用;有些文本協(xié)議不支持不可見字符的傳遞,只能轉(zhuǎn)換成可見字符來傳遞信息。有時在一些特殊的場合,大多數(shù)消息是純文本的,偶爾需要用這條純文本通道傳一張圖片之類的情況發(fā)生的時候,就會用到Base64,比如多功能Internet 郵件擴充服務(wù)(MIME)就是用Base64對郵件的附件進行編碼的。

      感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Git常用命令介紹

    Git常用命令介紹

    Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理。這篇文章介紹了Git的常用命令,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • 2018年最值得一讀的互聯(lián)網(wǎng)書單

    2018年最值得一讀的互聯(lián)網(wǎng)書單

    2018年已經(jīng)過去了近三分之二了,是不是感覺時光匆匆、一去不復(fù)返,過去的時間我們追不回,但是我們可以更加珍惜以后的時間!下面這篇文章主要給大家分享了2018年最值得一讀的互聯(lián)網(wǎng)書單,希望以后的日子里大家可以多讀書,讀好書
    2018-08-08
  • MATLAB教程數(shù)據(jù)運算變量操作及矩陣表示詳解

    MATLAB教程數(shù)據(jù)運算變量操作及矩陣表示詳解

    這篇文章主要介紹了MATLAB關(guān)于數(shù)據(jù)運算變量操作及矩陣表示的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進步
    2021-09-09
  • 解決使用IDE Run運行出錯package pack/test is not in GOROOT (/usr/local/go/src/pack/test)

    解決使用IDE Run運行出錯package pack/test is not in GOROOT (/usr/loca

    這篇文章主要介紹了解決使用IDE Run運行出錯package pack/test is not in GOROOT (/usr/local/go/src/pack/test),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 幾道和「黑洞照片」那種海量數(shù)據(jù)有關(guān)的算法問題

    幾道和「黑洞照片」那種海量數(shù)據(jù)有關(guān)的算法問題

    昨晚被一則新聞刷屏:北京時間 4 月 10 日今晚 9 點,人類首張黑洞照片正式發(fā)布
    2019-04-04
  • Eclipse插件安裝的八種方式總結(jié)

    Eclipse插件安裝的八種方式總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于Eclipse插件安裝的八種方式,現(xiàn)在開發(fā)java項目普遍使用idea了,但使用eclipse的也不少,如果要用的順手點,還是需要一些優(yōu)化和相關(guān)插件支持的,需要的朋友可以參考下
    2023-10-10
  • thymeleaf實現(xiàn)th:each雙重多重嵌套功能

    thymeleaf實現(xiàn)th:each雙重多重嵌套功能

    今天給大家分享一個使用 thymeleaf 實現(xiàn)一個動態(tài)加載一二級文章分類的功能,本文通過代碼講解的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11
  • 互聯(lián)網(wǎng)科技大佬推薦的12本必讀書籍

    互聯(lián)網(wǎng)科技大佬推薦的12本必讀書籍

    12本互聯(lián)網(wǎng)科技大佬推薦的必讀書籍,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 好用的VSCode頭部注釋插件Fileheader?Pro

    好用的VSCode頭部注釋插件Fileheader?Pro

    這篇文章主要為大家介紹了VSCode頭部注釋插件Fileheader?Pro的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • git版本庫創(chuàng)建拓展添加文件到版本庫教程

    git版本庫創(chuàng)建拓展添加文件到版本庫教程

    這篇文章主要為大家介紹了git版本庫創(chuàng)建拓展添加文件到版本庫教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04

最新評論