使用C++代码编解码,着重理解上一篇的概念,编码的时候内存会扩大二倍,一个字节4位被转为8位,字符变为两个。
代码如下
#include <iostream>
#include <string>
using namespace std;
static const char BASE16_ENC_TAB[] = "0123456789ABCDEF";
//0~9 对应的ASCII编码是 58~57 'A' ~'F'对应的是65~70
static const char BASE16_DEC_TAB[] = {
-1, //0
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //1~10
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //11~20
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //21~30
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //31~40
-1,-1,-1,-1,-1,-1,-1, 0, 1, 2, //41~50
3, 4, 5, 6, 7, 8, 9,-1,-1,-1, //51~60
-1,-1,-1,-1,10,11,12,13,14,15, //61~70 'A'~'F'
};
int Base16Encode(const unsigned char* in, int size, char* out) //Base16转码的接口(编码接口)
{
//base16转码后空间会扩大一倍。4位转成一个字符,所以一个字节就会转成2个字符
for (int i = 0; i < size; i&#