Byte[]和BASE64之間的轉換


一、 BASE64編碼

把byte[]中的元素當做無符號八位整數轉換成只含有64個基本字符的字符串,這些基本字符是:

l 大寫的A-Z

l 小寫的a-z

l 數字0-9

l '+' 和 '/'

l 空白字符(包括空白、tab,換行)

l ‘=’,為填充字符,結尾處可以填充0-2個填充字符

這64個字符構成BASE64的字符集。

 

image

Base64是將原文按照每 3 個字節一組分開,這個 3 字節組中的每一組將被按照位分解成 4 個部分,每個部分 6 個位,在這 4 個部分的每個部分高位加上 2 個 0構成一個新的 4 字節組,新的字節組中,每個字節只有 6 位,能表示64個值。

在原文在轉換為BASE64編碼時,試是以3個字節為一組轉換成4字節一組的BASE64編碼。如果原文不是三字節的倍數,可能多出一個字節和兩個字節,分別會被轉為2字節和3字節的BASE64編碼,這時編碼系統應該在形成的BASE64編碼最后添加上填充符”=”,保證BASE64編碼長度是4的倍數。所以在BASE64編碼后添加的填充符”=”可能為0-2個。

BASE64編

Byte[]和BASE64之間的轉換純粹就是表現形式的一種轉換,它們之間有直接的對應關系,不涉及到使用何種代碼頁的問題,BASE64表達的也是字節流。

二、 Byte[]和BASE64之間的轉換操作

static void Main(string[] args)

{

string factString = "中華人民共和國";

byte[] myByte;

string Base64Str;

//先把字符串按照utf-8的編碼轉換成byte[]

Encoding myEncoding = Encoding.GetEncoding("utf-8");

//myByte中獲得這樣的字節數組:228,184,173,229,141,142,228,186,186,230,176,145,229,133,177,229,146,140,229,155,189

myByte = myEncoding.GetBytes(factString);

//把byte[]轉成base64編碼,這個例子形成的base64編碼為:"5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9"

Base64Str = Convert.ToBase64String(myByte);

//再從base64編碼轉成byte[],又恢復為字節數組:228,184,173,229,141,142,228,186,186,230,176,145,229,133,177,229,146,140,229,155,189

myByte = Convert.FromBase64String(Base64Str);

//用同一個Encoding對象把byte[]轉成字符串:"中華人民共和國"

factString = myEncoding.GetString(myByte);

Console.WriteLine(factString);

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM