1. BASE64編解碼簡(jiǎn)介
Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來表示二進(jìn)制數(shù)據(jù)的方法。EASY EAI api封裝了BASE64編解碼工具,方便用戶對(duì)數(shù)據(jù)進(jìn)行BASE64封裝。
2. 快速上手
如果您初次閱讀此文檔,請(qǐng)閱讀:《入門指南/源碼管理及編程介紹/源碼工程管理》,按需管理自己工程源碼(注:此文檔必看,并建議采用【遠(yuǎn)程掛載管理】方式,否則有代碼丟失風(fēng)險(xiǎn)!!!)。
2.1 源碼工程下載
先在PC虛擬機(jī)定位到nfs服務(wù)目錄,再在目錄中創(chuàng)建存放源碼倉庫的管理目錄:
cd ~/nfsroot mkdir GitHub cd GitHub
再通過git工具,在管理目錄內(nèi)克隆遠(yuǎn)程倉庫(需要設(shè)備能對(duì)外網(wǎng)進(jìn)行訪問)
git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-3576.git

注:
* 此處可能會(huì)因網(wǎng)絡(luò)原因造成卡頓,請(qǐng)耐心等待。
* 如果實(shí)在要在gitHub網(wǎng)頁上下載,也要把整個(gè)倉庫下載下來,不能單獨(dú)下載本實(shí)例對(duì)應(yīng)的目錄。
2.2 開發(fā)環(huán)境搭建
通過adb shell進(jìn)入板卡開發(fā)環(huán)境,如下圖所示。
通過以下命令,把nfs目錄掛載上nfs服務(wù)器。
mount -t nfs -o nolock : /home/orin-nano/Desktop/nfs/

2.3 例程編譯
然后定位到nfs的掛載目錄,再在目錄中創(chuàng)建存放源碼倉庫的管理目錄:
cd /home/orin-nano/Desktop/nfs/GitHub
進(jìn)入到對(duì)應(yīng)的例程目錄執(zhí)行編譯操作,具體命令如下所示:
cd EASY-EAI-Toolkit-3576/Demos/common-base64/ ./build.sh

2.4 例程運(yùn)行及效果
執(zhí)行下方命令,運(yùn)行示例程序:
./Release/test-base64
執(zhí)行效果如下所示。
API的詳細(xì)說明,以及API的調(diào)用(本例程源碼),詳細(xì)信息見下方說明。
3. BASE64編解碼API說明
3.1 引用方式
EASY EAI api庫位于本倉庫的easyeai-api目錄中。為方便客戶在本地工程中直接調(diào)用我們的EASY EAI api庫,此處列出工程中需要鏈接的庫以及頭文件等,方便用戶直接添加。
描述 | CMake寫法 | Makefile寫法 |
api.cmake | ${common_root}/base64/api.cmake | 無 |
頭文件目錄 | ${BASE64_INCLUDE_DIRS} | -I ../../easyeai-api/common/base64 |
源文件目錄 | ${BASE64_SOURCE_DIRS} | ../../easyeai-api/common/base64 |
庫文件目錄 | 無 | 無 |
庫鏈接參數(shù) | ${BASE64_LIBS} | 無 |
API源代碼路徑為EASY-EAI-Toolkit-3576/easyeai-api/common/base64/。用戶可通過源代碼了解接口實(shí)現(xiàn),甚至可對(duì)源碼進(jìn)行修改。
3.2 BASE64編碼操作
編碼函數(shù)原型如下所示。
int32_t base64_encode(char *out_data, const char* in_data, unsigned int in_len);
具體介紹如下所示。
函數(shù)名base64_encode() | |
頭文件 | easyeai-api/common/base64/base64.h |
輸入?yún)?shù) | out_data:被編碼后的base64數(shù)據(jù) |
in_data:編碼前的源數(shù)據(jù) | |
in_len:需要對(duì)源數(shù)據(jù)進(jìn)行編碼部分的長(zhǎng)度 | |
返回值 | 編碼后,生成的base64字符串長(zhǎng)度 |
注意事項(xiàng) | 一般編碼后的數(shù)據(jù),比編碼前的數(shù)據(jù)至少要多1/3,具體大小為輸入數(shù)據(jù)大小以3對(duì)齊后的4/3 |
3.3 BASE64解碼操作
解碼函數(shù)原型如下所示。
int32_t base64_decode(char *out_data, unsigned int out_len, const char* encoded_string);
具體介紹如下所示。
函數(shù)名base64_decode() | |
頭文件 | easyeai-api/common/base64/base64.h |
輸入?yún)?shù) | out_data:解碼后的數(shù)據(jù) |
out_len:用于存放解碼后數(shù)據(jù)內(nèi)存的總長(zhǎng)度 | |
encoded_string:待解碼數(shù)據(jù) | |
返回值 | 編碼后所得數(shù)據(jù)的長(zhǎng)度 |
注意事項(xiàng) | 無 |
4. BASE64操作API案例
示例代碼路徑為EASY-EAI-Toolkit-3576/Demos/common-base64/test-base64.c。
示例一,對(duì)字符串進(jìn)行BASE64編碼,然后將得出的編碼數(shù)據(jù)再解碼。
char *cStr = "my name is hao"; char base64_data[1024] = {0}; char src_string[1024] = {0}; memset(base64_data, 0, sizeof(base64_data)); base64_encode(base64_data, cStr, strlen(cStr)); printf("encode data : %sn", base64_data); base64_decode(src_string, sizeof(src_string), base64_data); printf("source string : %sn", src_string)
示例二,驗(yàn)證數(shù)據(jù)中有0x00,還原出來的數(shù)據(jù)不會(huì)在0x00處斷開。
char num_data[8] = {0x67, 0x88, 0x70, '', 'r', 'n', 0x73, 0x73}; char decode_data[8] = {0}; memset(base64_data, 0, sizeof(base64_data)); base64_encode(base64_data, num_data, sizeof(num_data)); printf("encode data : %sn", base64_data); base64_decode(decode_data, sizeof(decode_data), base64_data); printf("source string : 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02xn", decode_data[0], decode_data[1], decode_data[2], decode_data[3], decode_data[4], decode_data[5], decode_data[6], decode_data[7]); 審核編輯 黃宇
-
編解碼
+關(guān)注
關(guān)注
1文章
145瀏覽量
19993 -
Base64
+關(guān)注
關(guān)注
0文章
25瀏覽量
8995 -
rk3576
+關(guān)注
關(guān)注
1文章
145瀏覽量
552
發(fā)布評(píng)論請(qǐng)先 登錄
RK3576 vs RK3588:為何越來越多的開發(fā)者轉(zhuǎn)向RK3576?
從性能到成本,深度剖析 RK3588 與 RK3576 怎么選
探索 RK3576 方案:卓越性能與靈活框架,誠邀開發(fā)定制合作!
rockchip rk3576開發(fā)設(shè)計(jì)資料
米爾瑞芯微RK3576實(shí)測(cè)輕松搞定三屏八攝像頭
RK3576有多強(qiáng)?實(shí)測(cè)三屏八攝像頭輕松搞定

【米爾RK3576開發(fā)板評(píng)測(cè)】+項(xiàng)目名稱值得購買的米爾RK3576開發(fā)板
米爾RK3576和RK3588怎么選?-看這篇就夠了
RK3588與RK3576區(qū)別解析

RK3576單板發(fā)布倒計(jì)時(shí):RK3399與RK3576對(duì)比

base64在前端開發(fā)中的應(yīng)用
如何優(yōu)化base64編碼的性能
base64編碼和解碼的使用方法
新品體驗(yàn) | RK3576開發(fā)板

評(píng)論