【基礎】Base64 編解碼淺析
Base64 一般用於在 HTTP 協議下傳輸二進位制資料,由於 HTTP 協議是文字協議,所以在 HTTP 協議下傳輸二進位制資料需要將二進位制資料轉換為字元資料。
然而直接轉換是不行的,因為網路傳輸只能傳輸可列印字元。
什麼是可列印字元?
在 ASCII 碼中規定,0~31、128 這 33 個字元屬於控制字元,32~127 這 95 個字元屬於可列印字元,也就是說網路傳輸只能傳輸這 95 個字元,不在這個範圍內的字元無法傳輸,Base64 編碼後便可以傳輸其他字元。
對映表如下:
Base64 將 3 個位元組轉變為 4 個位元組,因此,編碼後的程式碼量(以位元組為單位)約比編碼前的程式碼量多了 1/3。
如果程式碼量正好是 3 的整數倍,那麼恰好多了 1/3。
當多出的程式碼量不是 3 的整數倍時,程式碼量除以 3 的餘數就是 2 或者 1。轉換的時候,結果不夠 6 位的用 0 來補上相應的位置,之後再在 6 位的前面補兩個 0。轉換完空出的結果就用就用 “=” 來補位,總之要保證最後編碼出來得位元組數是 4 的倍數。
示例:
refer:
相關推薦
【基礎】Base64 編解碼淺析
Base64 一般用於在 HTTP 協議下傳輸二進位制資料,由於 HTTP 協議是文字協議,所以在 HTTP 協議下傳輸二進位制資料需要將二進位制資料轉換為字元資料。 然而直接轉換是不行的,因為網路傳輸只能傳輸可列印字元。 什麼是可列印字元? 在 ASCII 碼中規
【ffmpeg】視訊編解碼之ffmpeg命令列工具的常用命令彙總
H264視訊轉ts視訊流 ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts H264視訊轉mp4 ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4 ts視訊轉mp4 ffmpeg
iOS開發-基礎:使用Base64編解碼NSData和NSString物件
轉自:http://itony.me/488.html 簡介: 隨著iOS7正式版推出,Apple增加了使用Base64編解碼的支援。在這篇文章中我們將通過兩個例子,演示使用Base64編解碼NSData和NSString物件。 首先,我們建立一個NSString物件,
【嵌入式】Arduino編程基礎到應用全解析
接口 實現 關於 第一次 學習 wid 標誌位 解碼 post Arduino Author: Andrew.Du 基礎 基礎語法: setup() loop() pinMode(引腳,模式) pinMode(13,OUTPUT);
【轉載】MapReduce編程(一) Intellij Idea配置MapReduce編程環境
.net class 上傳 -c word 指定 otl 輸出信息 resource 目錄(?)[-] 一軟件環境 二創建maven工程 三添加maven依賴 四配置log4j 五啟動Hadoop 六運行WordCount從本地讀取文件 七運行Word
【基礎】C#異常處理的總結
ember -s 有效 理解 dac 十進制 reference bsp msil 一、異常處理的理解? 異常處理是指程序在運行過程中,發生錯誤會導致程序退出,這種錯誤,就叫做異常。 因此處理這種錯誤,就稱為異常處理。 二、異常處理如何操作? C# 異常處
【基礎】計算機的存儲單元--01與字的轉化
選址 概念 tro 基礎 word cpu 可選 處理 控制器 什麽是位(bit)、字節(Byte)、字、KB、MB 位(bit):"位"是電子計算機中最小的數據單位,類似於(兩,公斤,克)的概念。每一位的狀態只能是0或1,比如:11010100是一個8位二進制數。
【基礎】ORACLE中substr的用法
itl .cn 字符串 ref art from 基礎 htm bst ORACLE中substr函數的簡單用法 substr(字符串,截取開始位置,截取長度) //返回截取的字 substr(‘Hello World‘,0,1) //返回結果為 ‘H‘ *從字符串第一
【轉】VBA編程入門(二)
mat 復雜 任務 遙控 一次 環境 box range 使用 詳解VBA編程是什麽 由 vietdung90 創建,最後一次修改 2016-10-19 直到 90 年代早期,使應用程序自動化還是充滿挑戰性的領域.對每個需要自動化的應用程序,人們不得不學習一種不
【基礎】Attribute的妙用
.net main 屬性。 常用 現狀 void 例子 exc 作者 一、何為Attribute 下面是微軟官方對Attribute的解釋: 公共語言運行時允許你添加類似關鍵字的描述聲明,叫做Attributes,它對程序中的元素進行標註,如類型、字段、方法和屬性等
【Day29 】Soket編程
找到 8.0 作用 tro 理論 七層協議 電信 tps 分享圖片 客戶端/服務器架構 1、什麽是客戶端服務器/服務器架構?? 服務器:意義--就是一系列軟硬件的結合,為一個或多個客戶端提供服務。目的:接受請求並響應,然後處理更多請求。 客戶端:
【轉】關於編程,你的練習是不是有效的?
分享 關於 一個人 gpo 酷炫 合成 2.4 anon cal 對於我來說,提升技能的項目會有四種: 純興趣驅動的項目。即我的Idea列表上的一個個酷炫的項目,先滿足自己再說。 理論驅動的項目。這一類的項目會比較少,因為我們需要牽強地驅動出這樣的項目,然後以理論的方式驅
【基礎】循環數 【模擬】
int under 每一個 宋體 can port toc log flag 1096: 【基礎】循環數【模擬】 時間限制: 1 Sec 內存限制: 128 MB提交: 426 解決: 283[提交][狀態][討論版] 題目描述 描述 n 位的一個整數是循環數(cyc
【基礎】循環以及循環控制語句
初始 返回 自增 區別 嵌套for循環 循環結構 使用方法 後置 共同點 while: /* 演示while和do...while的使用方法及區別 while (表達式){ 代碼塊 } do { 代碼塊 } while(表達式); while與
【基礎】函數的聲明&返回值
com 高效率 ima tar 函數類 pac inf mage ase 以加減乘除運算為例 /* 函數的一般形式: 類型標示符 函數名(形式參數,形式參數...){ 函數體 } 類型表示符 為 該函數返回值的類型 不返回任何值的函數,返回值類型可以用voi
【SqlServer】SqlServer編程語言T-SQL的存儲過程
null ice 業務 sqlserve 數據庫語言 作用 lte code 傳遞 我們一開始學習數據庫語言的時候就是用一些簡單的insert,select等語法,但是隨著我們學習數據庫的深入,就會發現一些簡單的語法滿足不了我們的要求,比如處理一些業務邏輯,多表關聯的時候,
【基礎】函數的參數傳遞
輸出結果 技術 blog span sin image using 問題 實現 #include <iostream>using namespace std; int main(){ int x,y; cin >> x >&
【基礎】在css中繪制三角形及相關應用
3.1 三角形 分享圖片 繪制 提示框 穩定 核心 包括 邊框顏色 簡言 本文簡要闡述了用CSS邊框的方法在頁面上繪制三角形,包括幾種典型的三角形繪制,還介紹了幾個簡單的應用場景。利用邊框繪制三角形方法只是眾多方案中的一種,大家根據項目實際,選用最適宜項目的方案。 1 基
正則表達式【基礎】
因此 tab 出現 字符 字母 app bbc 正則表達 abc /abc/ 雙斜桿表示裏面是正則表達式 在awk中使用方法:awk ‘/a.c/{print $0}‘ data.txt .和\ awk ‘/a.c/{print $0}‘ data.txt 使用a.c
【基礎】結構體重載,用 char*作為std::map中的key
重載 http 註意 urn .net 參考 article 添加 無法 結構體重載 C++中,結構體是無法進行==,>,<,>=,<=,!=這些操作的,這也帶來了很多不方便的地方,尤其是在使用STL容器的時候,如果我們可以往語句中傳入結構體,一些