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

注:
* 此處可能會因網(wǎng)絡(luò)原因造成卡頓,請耐心等待。
* 如果實在要在gitHub網(wǎng)頁上下載,也要把整個倉庫下載下來,不能單獨下載本實例對應(yīng)的目錄。
2.2 開發(fā)環(huán)境搭建
通過adb shell進入板卡開發(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
進入到對應(yīng)的例程目錄執(zhí)行編譯操作,具體命令如下所示:
cd EASY-EAI-Toolkit-3576/Demos/common-base64/ ./build.sh

2.4 例程運行及效果
執(zhí)行下方命令,運行示例程序:
./Release/test-base64
執(zhí)行效果如下所示。

API的詳細說明,以及API的調(diào)用(本例程源碼),詳細信息見下方說明。
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/。用戶可通過源代碼了解接口實現(xià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:需要對源數(shù)據(jù)進行編碼部分的長度 | |
| 返回值 | 編碼后,生成的base64字符串長度 |
| 注意事項 | 一般編碼后的數(shù)據(jù),比編碼前的數(shù)據(jù)至少要多1/3,具體大小為輸入數(shù)據(jù)大小以3對齊后的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)存的總長度 | |
| encoded_string:待解碼數(shù)據(jù) | |
| 返回值 | 編碼后所得數(shù)據(jù)的長度 |
| 注意事項 | 無 |
4. BASE64操作API案例
示例代碼路徑為EASY-EAI-Toolkit-3576/Demos/common-base64/test-base64.c。
示例一,對字符串進行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)
示例二,驗證數(shù)據(jù)中有0x00,還原出來的數(shù)據(jù)不會在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文章
151瀏覽量
20559 -
Base64
+關(guān)注
關(guān)注
0文章
26瀏覽量
9261 -
rk3576
+關(guān)注
關(guān)注
1文章
267瀏覽量
1547
發(fā)布評論請先 登錄
迅為如何在RK3576上部署YOLOv5;基于RK3576構(gòu)建智能門禁系統(tǒng)
12 路低延遲推流!米爾 RK3576 賦能智能安防 360° 環(huán)視
【作品合集】米爾RK3576開發(fā)板測評
【作品合集】靈眸科技EASY EAI Orin Nano(RK3576)開發(fā)板測評
瑞芯微RK3576平臺FFmpeg硬件編解碼移植及性能測試實戰(zhàn)攻略 觸覺智能RK3576開發(fā)板演示
RK3576助力智慧安防:8路高清采集與AI識別
瑞芯微RK3576與RK3576S有什么區(qū)別,性能參數(shù)配置與型號差異解析
告別“人工盯屏”時代丨基于RK3576開發(fā)板的電梯AI智能監(jiān)控方案
基于RK3576的BASE64編解碼
評論