Byte 和BASE64之間的轉換

2022-08-15 03:42:16 字數 1487 閱讀 6368

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

l 大寫的a-z

l 小寫的a-z

l 數字0-9

l '+' 和 '/'

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

l 『=』,為填充字元,結尾處可以填充0-2個填充字元

這64個字元構成base64的字符集。

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表達的也是位元組流。

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);

Qt QImage和Base64之間的轉換

今天同事讓幫忙將bmp影象轉換到base64格式的字串,嘗試了一下,直接上 吧!環境 vs2015 qt5.9 標頭檔案 pragma once include include ui bmp2base64vs.h class qimage class bmp2base64vs public qmai...

物件base64轉碼 Base64編碼轉換

1 為什麼mime要有編碼轉換 在mime總結這篇經驗中,總結了mime相較於rfc 822的擴充套件功能,其中提到了rfc 822的缺陷 非英語字元都不能在電子郵件中使用 2 電子郵件中不能插入二進位制檔案 如 3 電子郵件不能有附件。能夠對文字進行簡單的加密 2 quoted printable...

base64轉碼 解碼

最近有業務需要使用base64轉碼,現在整理一下 window.btoawindow.atob示例window.btoa test d zda window.atob d zda test如果字串中包含中文,直接使用btoa會報錯,可以先使用encodeuricomponent進行編碼 window...