新聞中心
Base64是一種基于64個可打印字符來表示二進制數(shù)據(jù)的表示方法。由于 2的6次方是64,所以每6個比特為一個單元,對應(yīng)某個可打印字符。3個字節(jié)有24個比特,對應(yīng)于4個Base64單元,即3個字節(jié)可由4個可打印字符來表示。它可用來作為電子郵件的傳輸編碼。在Base64中的可打印字符包括字母A-Z、a-z、數(shù)字0-9,這樣共有62個字符,此外兩個可打印符號在不同的系統(tǒng)中而不同。在MIME格式中,剩余兩個字符是加號+和斜杠/,等號=用來作為后綴用途。UTF-7是一個修改版Base64,主要的區(qū)別在于不用等號=補余,因為該字符通常需要大量的轉(zhuǎn)譯。在IRCu等軟件所使用的P10 IRC服務(wù)器間協(xié)議中,將+/改成了[]。Base64編碼可用于在HTTP環(huán)境下傳遞,不在末尾填充=號,并將標(biāo)準(zhǔn)Base64中的+和/分別改成了-和_。

公司主營業(yè)務(wù):做網(wǎng)站、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出安康免費做網(wǎng)站回饋大家。
base64的原理
base64編碼后的數(shù)據(jù)比原始數(shù)據(jù)略長,比原來長1/3。為什么會長1/3?我們學(xué)習(xí)下原理,之后工作中base64就再也不會擋道了。轉(zhuǎn)換的時候,將3字節(jié)的數(shù)據(jù),先后放入一個24位的緩沖區(qū)中,先來的字節(jié)占高位。數(shù)據(jù)不足3字節(jié)的話,于緩沖器中剩下的比特用0補足。每次取出6比特,按照其值選擇ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作為編碼后的輸出,直到全部輸入數(shù)據(jù)轉(zhuǎn)換完成。若原數(shù)據(jù)長度不是3的倍數(shù)時且剩下1個輸入數(shù)據(jù),則在編碼結(jié)果后加2個=;若剩下2個輸入數(shù)據(jù),則在編碼結(jié)果后加1個=。換句話,本來3個字節(jié),base64經(jīng)過自己的編碼成為4個字節(jié)。比原理多了1/3。來,舉個例子
| 文本 | h | e | l | |
|---|---|---|---|---|
| ascii 編碼 | 104 | 101 | 108 | |
| 二進制 | 01101000 | 01100101 | 01101100 | |
| base64 6位 | 011010 | 00 0110 | 010101 | 101100 |
| base64 10進制編號 | 26 | 6 | 21 | 44 |
| base64 結(jié)果 | a | G | V | s |
hel的base64編碼結(jié)果就是aGVs
base64碼表
base64的應(yīng)用
base64的應(yīng)用特別廣泛,個人在開發(fā)中遇到最多的兩個方面,第一個是URL的base64,另一個是圖片base64。先說第一種,已經(jīng)有urlencode了,為什么還需要base64 的URL。各有用途。urlencode是將-_. 之外的所有非字母數(shù)字字符都將被替換成百分號(%)后跟兩位十六進制數(shù),空格則編碼為加號(+)。如果一個URL里面有+ 有空格,是不是urlencode就搞不定,使用base64就會迎刃而解。帶來的代價就URL比原理長了1/3
圖片編碼的問題,經(jīng)常跟客戶端開發(fā)的時候,客戶端使用二進制流上傳圖片的時候比較復(fù)雜,就可以使用base64將圖片的二進制編碼轉(zhuǎn)成base64,服務(wù)端接到數(shù)據(jù)之后再basedecode之后就是圖片的二進制流。特別方便,帶來的結(jié)果就是,傳輸?shù)臄?shù)據(jù)多了1/3。
遇到的問題
根據(jù)RFC 822規(guī)定,每76個字符,還需要加上一個回車換行。出問題的一般都是822規(guī)定,有的語言,對base64decode的時候,發(fā)現(xiàn)有換行符就decode失敗了,究其原因基本都市822規(guī)定,有很多換行,decode的時候解碼失敗,知道原因了就特別簡單,將換行符\r|\r\n 替換成 空,再base64decode就可以了。
文章名稱:淺談Base64編碼原理
文章路徑:http://m.fisionsoft.com.cn/article/dhhggcd.html


咨詢
建站咨詢
