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

面對現實,超越自己
逆水行舟,不進則退
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 王海光 閱讀(11354) 評論(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>
            欧美激情中文字幕一区二区| 日韩视频一区二区在线观看| 亚洲国产一区二区三区高清| 在线观看欧美一区| 在线看片欧美| 亚洲人成亚洲人成在线观看图片| 亚洲国产激情| 亚洲作爱视频| 欧美在线观看天堂一区二区三区| 性高湖久久久久久久久| 久久久精彩视频| 欧美激情一区二区三区在线视频| 亚洲精品日韩欧美| 午夜精品久久| 欧美1区3d| 欧美吻胸吃奶大尺度电影| 国产精品一区2区| 激情欧美日韩| 正在播放欧美一区| 久久久亚洲国产天美传媒修理工| 亚洲国产一二三| 夜夜嗨av一区二区三区网站四季av| 亚洲在线中文字幕| 欧美多人爱爱视频网站| 国产精品私房写真福利视频| 在线日本成人| 午夜精品成人在线| 亚洲国产精选| 欧美中文在线字幕| 国产精品国产三级国产aⅴ入口 | 香港成人在线视频| 欧美国产日韩一区二区在线观看| 国产拍揄自揄精品视频麻豆| 亚洲美女黄色| 久热精品在线| 午夜一区不卡| 国产精品久久久久久久9999| 亚洲精品中文字| 老色批av在线精品| 亚洲欧美综合一区| 国产精品二区在线| 亚洲免费久久| 亚洲免费视频在线观看| 亚洲国产欧美在线人成| 午夜日韩在线观看| 亚洲精品欧美| 久久综合久久综合久久| 国产日韩精品一区二区| 日韩亚洲精品在线| 亚洲国产mv| 久久综合激情| 在线播放豆国产99亚洲| 久久久天天操| 久久精品视频在线免费观看| 国产无一区二区| 午夜在线a亚洲v天堂网2018| 99爱精品视频| 欧美午夜宅男影院在线观看| 亚洲视频在线播放| 制服丝袜激情欧洲亚洲| 欧美日韩国产美| 中国女人久久久| 一区二区三区高清视频在线观看| 欧美日韩天堂| 午夜精品久久久久久| 制服丝袜激情欧洲亚洲| 国产欧美精品一区| 久久精品国产免费看久久精品| 亚洲欧美另类综合偷拍| 国产一区二区无遮挡| 久热国产精品| 你懂的一区二区| 亚洲视频一起| 欧美在线观看网址综合| 亚洲成人在线| 亚洲激情在线视频| 欧美午夜免费电影| 久久精品国产亚洲aⅴ| 久久久人成影片一区二区三区| 在线观看日韩精品| 亚洲精品视频免费在线观看| 国产精品久久久久久久久借妻| 欧美主播一区二区三区美女 久久精品人 | 欧美xart系列在线观看| 亚洲精品一区在线观看| av成人免费在线| 国内成人精品视频| 亚洲黄色尤物视频| 国产精品婷婷| 欧美国产日韩亚洲一区| 欧美视频免费| 另类激情亚洲| 国产精品二区三区四区| 牛牛国产精品| 国产精品视频男人的天堂| 牛牛影视久久网| 国产精品国产三级国产| 欧美高清在线精品一区| 国产精品亚洲成人| 欧美精品在线极品| 亚洲精品国产视频| 亚洲视频999| 亚洲国产精品久久人人爱蜜臀 | 欧美伊久线香蕉线新在线| 久久久久久9| 亚洲综合视频在线| 老牛嫩草一区二区三区日本| 亚洲伊人久久综合| 欧美大胆a视频| 久久午夜电影| 国产精品影视天天线| 亚洲国产日韩精品| 激情av一区二区| 亚洲欧美日本精品| 在线中文字幕日韩| 欧美韩日亚洲| 欧美电影在线免费观看网站| 国产日韩在线一区二区三区| 99re6热只有精品免费观看 | 国产日产欧产精品推荐色 | 亚洲国产一区在线观看| 欧美淫片网站| 午夜欧美大片免费观看 | 欧美精品日韩一区| 欧美电影免费观看大全| 精品成人一区二区| 久久精品99国产精品日本| 欧美一区二区三区在线免费观看| 欧美日韩精品久久| 日韩亚洲精品视频| 一本色道久久加勒比88综合| 蜜桃av久久久亚洲精品| 老鸭窝毛片一区二区三区| 国模精品娜娜一二三区| 欧美一区二区三区久久精品茉莉花| 午夜精品美女久久久久av福利| 欧美视频中文字幕在线| 中文精品一区二区三区| 亚洲一区视频在线| 国产精品美女主播在线观看纯欲| 一区二区三区日韩| 性色一区二区| 国产一区二区精品在线观看| 久久国产一区二区| 欧美激情国产日韩| 一区二区国产日产| 国产精品午夜国产小视频| 欧美一区二区高清| 欧美激情国产日韩| 亚洲欧美视频一区二区三区| 国产婷婷色一区二区三区| 久久手机精品视频| 91久久精品美女高潮| 亚洲欧美国产va在线影院| 国产亚洲精品一区二区| 六月婷婷一区| 一本久久青青| 狂野欧美激情性xxxx欧美| 国产视频亚洲精品| 久久免费视频观看| 亚洲激情欧美| 欧美日韩在线第一页| 亚洲在线网站| 欧美福利一区| 制服诱惑一区二区| 国产真实精品久久二三区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲人体1000| 欧美在线视频a| 亚洲狼人精品一区二区三区| 国产精品色在线| 久久综合一区| 中文有码久久| 欧美韩日高清| 亚洲欧美中文在线视频| 在线精品一区二区| 国产精品xxxxx| 蜜臀a∨国产成人精品| 亚洲欧美日本伦理| 亚洲乱码国产乱码精品精| 久久久久久欧美| 亚洲午夜激情免费视频| 在线欧美福利| 国内外成人在线| 欧美日韩和欧美的一区二区| 欧美中文字幕视频| 制服诱惑一区二区| 亚洲精品社区| 欧美国产欧美综合| 久久精品国产清高在天天线| 99综合精品| 亚洲国产美国国产综合一区二区| 国产精品每日更新| 欧美人与性动交cc0o| 久久综合九色欧美综合狠狠| 亚洲欧美精品suv| 亚洲一级黄色| 99国产一区二区三精品乱码| 欧美福利小视频| 免费亚洲电影|