至此,利用Base64转码的方式,来显示保存显示图片的方法,就算是成功了!
我们再来看一个base64编码解码的例子
首先是编码
- const BYTE Base64ValTab[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- #define AVal(x) Base64ValTab[x] int CSeeBase64Dlg::EncodeBase64(char * pInput, char * pOutput)
- { int i = 0;
- int loop = 0; int remain = 0;
- int iDstLen = 0; int iSrcLen = (int)strlen(pInput);
- loop = iSrcLen/3;
- remain = iSrcLen%3;
- // also can encode native char one by one as decode method // but because all of char in native string is to be encoded so encode 3-chars one time is easier.
- for (i=0; i < loop; i++)
- { BYTE a1 = (pInput[i*3] >> 2);
- BYTE a2 = ( ((pInput[i*3] & 0x03) << 4) | (pInput[i*3+1] >> 4) ); BYTE a3 = ( ((pInput[i*3+1] & 0x0F) << 2) | ((pInput[i*3+2] & 0xC0) >> 6) );
- BYTE a4 = (pInput[i*3+2] & 0x3F);
- pOutput[i*4] = AVal(a1); pOutput[i*4+1] = AVal(a2);
- pOutput[i*4+2] = AVal(a3); pOutput[i*4+3] = AVal(a4);
- }
- iDstLen = i*4;
- if (remain == 1) {
- // should pad two equal sign i = iSrcLen-1;
- BYTE a1 = (pInput[i] >> 2); BYTE a2 = ((pInput[i] & 0x03) << 4);
- pOutput[iDstLen++] = AVal(a1);
- pOutput[iDstLen++] = AVal(a2); pOutput[iDstLen++] = '=';
- pOutput[iDstLen++] = '='; pOutput[iDstLen] = 0x00;
- } else if (remain == 2)










