青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

面對現實,超越自己
逆水行舟,不進則退
posts - 269,comments - 32,trackbacks - 0
.h文件:
#include <string>
using namespace std;

class ZBase64
{
public:
    /*編碼
    DataByte
        [in]輸入的數據長度,以字節為單位
    
*/
    string Encode(const unsigned char* Data,int DataByte);
    /*解碼
    DataByte
        [in]輸入的數據長度,以字節為單位
    OutByte
        [out]輸出的數據長度,以字節為單位,請不要通過返回值計算
        輸出數據的長度
    
*/
    string Decode(const char* Data,int DataByte,int& OutByte);
};

.cpp文件:
#include "stdAfx.h"
#include "ZBase64.h"

string ZBase64::Encode(const unsigned char* Data,int DataByte)
{
    //編碼表
    const char EncodeTable[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    //返回值
    string strEncode;
    unsigned char Tmp[4]={0};
    int LineLength=0;
    for(int i=0;i<(int)(DataByte / 3);i++)
    {
        Tmp[1] = *Data++;
        Tmp[2] = *Data++;
        Tmp[3] = *Data++;
        strEncode+= EncodeTable[Tmp[1] >> 2];
        strEncode+= EncodeTable[((Tmp[1] << 4) | (Tmp[2] >> 4)) & 0x3F];
        strEncode+= EncodeTable[((Tmp[2] << 2) | (Tmp[3] >> 6)) & 0x3F];
        strEncode+= EncodeTable[Tmp[3] & 0x3F];
        if(LineLength+=4,LineLength==76) {strEncode+="\r\n";LineLength=0;}
    }
    //對剩余數據進行編碼
    int Mod=DataByte % 3;
    if(Mod==1)
    {
        Tmp[1] = *Data++;
        strEncode+= EncodeTable[(Tmp[1] & 0xFC) >> 2];
        strEncode+= EncodeTable[((Tmp[1] & 0x03) << 4)];
        strEncode+= "==";
    }
    else if(Mod==2)
    {
        Tmp[1] = *Data++;
        Tmp[2] = *Data++;
        strEncode+= EncodeTable[(Tmp[1] & 0xFC) >> 2];
        strEncode+= EncodeTable[((Tmp[1] & 0x03) << 4) | ((Tmp[2] & 0xF0) >> 4)];
        strEncode+= EncodeTable[((Tmp[2] & 0x0F) << 2)];
        strEncode+= "=";
    }
    
    return strEncode;
}

string ZBase64::Decode(const char* Data,int DataByte,int& OutByte)
{
    //解碼表
    const char DecodeTable[] =
    {
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// '+'
, 0, 0,
// '/'
, 53, 54, 55, 56, 57, 58, 59, 60, 61, // '0'-'9'
, 0, 0, 0, 0, 0, 0,
, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 'A'-'Z'
, 0, 0, 0, 0, 0,
, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, // 'a'-'z'
    };
    //返回值
    string strDecode;
    int nValue;
    int i= 0;
    while (i < DataByte)
    {
        if (*Data != '\r' && *Data!='\n')
        {
            nValue = DecodeTable[*Data++] << 18;
            nValue += DecodeTable[*Data++] << 12;
            strDecode+=(nValue & 0x00FF0000) >> 16;
            OutByte++;
            if (*Data != '=')
            {
                nValue += DecodeTable[*Data++] << 6;
                strDecode+=(nValue & 0x0000FF00) >> 8;
                OutByte++;
                if (*Data != '=')
                {
                    nValue += DecodeTable[*Data++];
                    strDecode+=nValue & 0x000000FF;
                    OutByte++;
                }
            }
            i += 4;
        }
        else// 回車換行,跳過
        {
            Data++;
            i++;
        }
     }
    return strDecode;
}

使用示例(結合CxImage庫):
CString CScanDlg::EncodeImage()
{//對圖片進行Base64編碼
    ZBase64 zBase;
    //圖片編碼
    CxImage  image;   // 定義一個CxImage對象    
    image.Load(this->m_strImgPath, CXIMAGE_FORMAT_JPG);   //先裝載jpg文件,需要指定文件類型
    long size=0;//得到圖像大小
    BYTE* buffer=0;//存儲圖像數據的緩沖
    image.Encode(buffer,size,CXIMAGE_FORMAT_JPG);//把image對象中的圖像以type類型數據copy到buffer
    string strTmpResult=zBase.Encode(buffer,size);
    CString result;
    result = strTmpResult.c_str();
    return result;
}

void CScanDlg::DecodeImageData(CString strData)
{//對Base64編碼過的數據解碼并顯示原圖片

    ZBase64 zBase;
    int OutByte=0;
    string strTmpResult=zBase.Decode(strData,strData.GetLength(),OutByte);
    int i,len = strTmpResult.length();
    BYTE *buffer = new BYTE[len];
    for (i=0;i<len;++i)
    {
        buffer[i] = strTmpResult[i];
    }
    CxImage image(buffer,len,CXIMAGE_FORMAT_JPG);//把內存緩沖buffer中的數據構造成Image對象
    delete [] buffer;
    CDC* hdc = m_picture.GetDC();
    m_bitmap = image.MakeBitmap(hdc->m_hDC);
    HBITMAP h0ldBmp = m_picture.SetBitmap(m_bitmap);
    if(h0ldBmp) DeleteObject(h0ldBmp);
    if(hdc->m_hDC) m_picture.ReleaseDC(hdc);
    if(m_bitmap) DeleteObject(m_bitmap);
}

本文轉自:http://www.cnblogs.com/phinecos/archive/2008/10/10/1308272.html
posted on 2013-03-20 14:00 王海光 閱讀(11359) 評論(0)  編輯 收藏 引用 所屬分類: MFC
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲三级毛片| 亚洲免费观看在线视频| 亚洲欧美国产视频| 国产专区一区| 亚洲精品免费在线观看| 欧美视频中文字幕| 久久精品水蜜桃av综合天堂| 久久久综合激的五月天| 夜夜嗨网站十八久久| 午夜久久久久| 亚洲美女色禁图| 亚洲男人的天堂在线| 亚洲精品乱码久久久久久蜜桃麻豆| 一本久道久久久| 在线成人亚洲| 亚洲视频精品在线| 亚洲国产va精品久久久不卡综合| 一区二区日韩精品| 亚洲国内自拍| 欧美在线地址| 亚洲欧美文学| 欧美国产亚洲精品久久久8v| 久久九九99视频| 国产精品乱码妇女bbbb| 亚洲美女视频在线观看| 亚洲二区在线| 久久成人资源| 亚洲欧美视频在线| 欧美日韩精品福利| 欧美成人情趣视频| 国产精品日韩一区二区| 亚洲第一狼人社区| 国产在线拍揄自揄视频不卡99| 亚洲全黄一级网站| 精品91视频| 欧美一区二区三区在线| 性色av一区二区三区| 欧美日韩专区| 亚洲精品一区二区在线观看| 亚洲欧洲中文日韩久久av乱码| 狠狠色狠狠色综合日日tαg| 亚洲欧洲日产国码二区| 噜噜噜在线观看免费视频日韩| 欧美体内谢she精2性欧美| 亚洲第一在线视频| 亚洲第一页自拍| 久久国产精品黑丝| 久久精品理论片| 国产亚洲成年网址在线观看| 亚洲一区日本| 小黄鸭精品aⅴ导航网站入口| 欧美日韩直播| 亚洲视频播放| 亚久久调教视频| 国产精品美女xx| 亚洲在线一区二区| 久久精品国产清自在天天线| 欧美一级一区| 麻豆精品视频| 在线观看91精品国产入口| 久久久蜜桃精品| 另类激情亚洲| 亚洲福利电影| 欧美不卡一卡二卡免费版| 亚洲高清影视| 亚洲视频欧洲视频| 国产精品久久久久毛片软件 | 久热精品视频在线| 欧美成人一品| 一个色综合导航| 国产精品久久久久久久久借妻| 亚洲视频一区| 久久久久久夜| 亚洲国产精品第一区二区| 欧美精品在线播放| 在线视频中文亚洲| 欧美在线一二三区| 黑人一区二区| 欧美欧美全黄| 亚洲欧美日韩一区二区在线 | 欧美日韩免费高清一区色橹橹| 夜夜精品视频| 久久久99免费视频| 91久久国产综合久久蜜月精品| 欧美日韩三区| 欧美在线网站| 亚洲精品免费在线| 久久久欧美精品sm网站| 亚洲精品乱码久久久久久日本蜜臀 | 国产一区二区丝袜高跟鞋图片| 久久综合九色欧美综合狠狠| 99精品黄色片免费大全| 久久国产免费| 在线午夜精品自拍| 国产在线播放一区二区三区| 欧美日韩123| 欧美专区18| 一本色道久久综合亚洲精品按摩 | 91久久精品一区二区别| 欧美h视频在线| 亚洲欧美久久久久一区二区三区| 美女脱光内衣内裤视频久久影院 | 久久精品青青大伊人av| 先锋影音国产精品| 国产欧美在线播放| 欧美激情精品久久久久久免费印度 | 亚洲第一精品福利| 91久久久国产精品| 性欧美xxxx视频在线观看| 欧美韩日精品| 欧美一级午夜免费电影| 亚洲国产精品123| 欧美日韩免费在线| 久久爱www.| 亚洲欧洲99久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲免费视频在线观看| 欧美大胆成人| 精品成人一区二区三区| 一区二区三区免费看| 欧美激情精品久久久久久久变态| 欧美专区中文字幕| 亚洲精品美女91| 韩日欧美一区| 国产精品黄色| 欧美精品在线观看| 久久综合狠狠| 久久中文字幕一区| 久久精品女人| 久久国产婷婷国产香蕉| 久久国产88| 久久精品成人欧美大片古装| 亚洲欧美日韩一区| 亚洲免费人成在线视频观看| 亚洲小说欧美另类社区| 99香蕉国产精品偷在线观看| 久久av一区二区三区漫画| 亚洲精品久久久久久下一站 | 国产在线精品成人一区二区三区 | 欧美国产日本在线| 老司机免费视频一区二区三区| 午夜欧美大片免费观看| 日韩一级片网址| 欧美日韩免费观看一区三区| 久久精品91久久久久久再现| 国产精品人人做人人爽 | 快she精品国产999| 欧美激情第二页| 亚洲品质自拍| 西瓜成人精品人成网站| 久久久久久久一区二区| 久久免费视频一区| 一本色道久久综合亚洲精品不卡 | 欧美在线视频免费| 亚洲电影在线看| 欧美影院成年免费版| 1769国产精品| 一本到高清视频免费精品| 亚洲人体影院| 久久久久久久久综合| 久久综合色综合88| 日韩一级视频免费观看在线| 在线观看精品| 欧美日韩不卡视频| 欧美a级一区| 欧美激情第1页| 亚洲午夜高清视频| 久久综合国产精品台湾中文娱乐网| 欧美色欧美亚洲另类二区 | 一本到高清视频免费精品| 久久国产一区二区三区| 日韩视频在线观看国产| 久久三级视频| 羞羞漫画18久久大片| 国产精品二区在线观看| 99re热这里只有精品免费视频| 久久尤物视频| 久久尤物视频| 一本色道久久综合亚洲精品按摩| 亚洲天天影视| 久久久久国产一区二区三区| 久久精品一级爱片| 欧美不卡一区| 中日韩男男gay无套| 亚洲欧美日韩另类精品一区二区三区| 欧美在线电影| 欧美精品国产| 国产精品视频xxxx| 亚洲人成毛片在线播放| 亚洲一级片在线看| 久久免费观看视频| 日韩视频免费在线| 久久亚洲精品欧美| 国产精品麻豆va在线播放 | 亚洲第一视频| 亚洲淫片在线视频| 欧美黄网免费在线观看| 中日韩美女免费视频网址在线观看 | 久久久国产精品一区二区中文 | 亚洲视频福利|