Base64

1、介紹

Base64編碼,是程序開發中經常使用到的編碼方法。因爲base64編碼的自負牀,更適合不同平臺,不同語言的傳輸(一個字符可能其他系統沒有)。他是一種基於64個可打印字符來表示二進制數據的標識方法。他通常用作存儲,傳輸一些二進制數據編碼方法,一句:將二進制數據文本化(轉成ASCII)

2、作用

1、由於某些系統中只能使用ASCII字符。Base64就是用來將非ASCII字符的數據轉換成ASCII字符的一種方法。
2、對二進制文件進行文本化後的傳輸
3、前後臺交互時,經常使用base64,這樣可以避免特殊字符傳輸錯誤

3、Base64編碼表

在這裏插入圖片描述

4、示例說明

以下圖的表格爲示例,我們具體分析一下整個過程。
在這裏插入圖片描述
第一步:“M”、“a”、"n"對應的ASCII碼值分別爲77,97,110,對應的二進制值是01001101、01100001、01101110。如圖第二三行所示,由此組成一個24位的二進制字符串。
第二步:如圖紅色框,將24位每6位二進制位一組分成四組。
第三步:在上面每一組前面補兩個0,擴展成32個二進制位,此時變爲四個字節:00010011、00010110、00000101、00101110。分別對應的值(Base64編碼索引)爲:19、22、5、46。
第四步:用上面的值在Base64編碼表中進行查找,分別對應:T、W、F、u。因此“Man”Base64編碼之後就變爲:TWFu。

位數不足情況

上面是按照三個字節來舉例說明的,如果字節數不足三個,那麼該如何處理?
在這裏插入圖片描述
兩個字節:兩個字節共16個二進制位,依舊按照規則進行分組。此時總共16個二進制位,每6個一組,則第三組缺少2位,用0補齊,得到三個Base64編碼,第四組完全沒有數據則用“=”補上。因此,上圖中“BC”轉換之後爲“QKM=”;
一個字節:一個字節共8個二進制位,依舊按照規則進行分組。此時共8個二進制位,每6個一組,則第二組缺少4位,用0補齊,得到兩個Base64編碼,而後面兩組沒有對應數據,都用“=”補上。因此,上圖中“A”轉換之後爲“QQ==”;

package main

import (
	"encoding/base64"
	"fmt"
)

func main(){
	fmt.Println("標準base64編碼...")
	info := []byte("國足宇宙第一!!!")
	encodeInfo := base64.StdEncoding.EncodeToString(info)
	fmt.Printf("encode info 1:%s\n",encodeInfo)
	fmt.Printf("URL base64...\n" )
	encodeInfo = base64.URLEncoding.EncodeToString(info)	//因爲URL中有一些特殊字符,因此有專門的函數
	fmt.Printf("URL encode info 1:%s\n",encodeInfo)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章