亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

MIME和BASE64編碼/解碼程序代碼

2019-11-17 05:40:00
字體:
來源:轉載
供稿:網友

  首先我要在這里向各位糾正我犯在一個錯誤:Base64 只是 MIME 的一種編碼方案, 我原來所說的 MIME 其實是 MIME 的另一種編碼方案 -- Quoted-PRintable ,所以我對本文作了一些修正, 并對由此而給大家帶來的誤導表示歉意。 May.6-01

    最近在研究 POP3 時碰到一個問題,即其中的中文都是經過 MIME 編碼了的, 如 MS Outlook EXPress 是用 Base64 ,而 Foxmail 則用的是 QP , 本來想找幾個現成的編碼/解碼的代碼,結果只在 UDDF 中找到一個 Delphi 的 Base64 Decode , 雖然 UDDF 說是 Encode/Decode ,但我是沒找到 Encode 的部分,而且寫得不好, 只好自已寫一個了。

    此代碼是一個 BCB 的單元,非常簡單,提供了四個函數, 要改成 Delphi 或其它 C/C++ 也很輕易,有需要的自已改吧。此代碼經過測試,結果正確。

    補充:因為不久前有一位用 VC 的朋友在引用此代碼時出碰到一些困難, 是由于 BCB 的 AnsiString 的非凡性造成的,所以我將此代碼改寫為標準 C 的,本來是應該這樣的, 但我習慣了用 AnsiString 所以才寫成那樣的,不過現在只好改寫了。但為了方便 Delphi/BCB 使用,我還是非凡加了一些東東,詳見程序的注釋,目的無非是為了更好用一些,其它語言的請自行參考吧。Mar.31-01

    再補充:為了使這段程序更加實用,我將其整理為幾個單元, 分別用于 Delphi 和 C++Builder 。包括對數據流 TMemoryStream 和字符串的處理。可以在本站作品中下載。Aug.14-01

修正:因為不久前一位網友給我發來MAIL說他在用些代碼解碼郵件附件時出錯,我檢查后發現我的解碼函數只能處理連續字符串,而一般郵件附件都是帶回車的字符串,所以我作了一點點修正,見下面的注釋。Apr.03-02

    下面是頭文件:

//---------------------------------------------------------------------------
//  MIME(QP & Base64) Encode/Decode unit. (H)
//  Copyright (c) 2000, 02 Mental Studio - http://mental.mentsu.com
//  Author : Raptor - raptorz@163.com
//---------------------------------------------------------------------------
#ifndef mimeb64H
#define mimeb64H
//---------------------------------------------------------------------------

#ifdef __cplusplus
extern "C" {
#endif

int QPEncode(     char * const aDest, const unsigned char * aSrc, int aLen );
int QPDecode(     unsigned char * const aDest, const char * aSrc );
int Base64Encode( char * const aDest, const unsigned char * aSrc, int aLen );
int Base64Decode( unsigned char * const aDest, const char * aSrc );

#ifdef __cplusplus
}
#endif
//---------------------------------------------------------------------------
#endif
      

    下面是 C 文件:

//---------------------------------------------------------------------------
//  MIME(QP & Base64) Encode/Decode unit. (C)

//  Copyright (c) 2000, 01 Mental Studio - http://mental.mentsu.com
//  Author : Raptor - raptorz@163.com
//---------------------------------------------------------------------------
//
//  如要用于 Delphi ,請用如下命令編譯本單元,產生 mimeb64.obj 文件:
//  bcc32 -c -pr -O2 -C -K -N- -k- -d -3 -r- mimeb64.c
//  各參數意義分別為:
//  -c  編譯為 obj 文件
//  -pr 產生 Pascal 的 fastcall 調用方式
//  -O2 優化選項為2
//  -C  答應嵌套注釋
//  -K  默認使用無符號字符
//  -N- 不對棧溢出作檢查
//  -k- 不使用標準??蚣?br />//  -d  合并重復的字符串
//  -3  使用 386 指令
//  -r- 未知^_^
//
//  為方便使用,在 BCB 中可編寫下面這個函數:
/*
//  aOp : 0(QPEncode) 1(QPDecode) 2(Base64Encode) 3(Base64Decode)
AnsiString MimeQPBase64( AnsiString aSrc, int aOp )
{
    int n;
    TMemoryStream * buf;
    AnsiString s = "";

    buf = new TMemoryStream( );
    try
    {
        n = aSrc.Length( );
        if ( aOp == 0 )
        {  //  QPEncode
            buf->Size = n * 3 + 1;
            QPEncode( ( char * )( buf->Memory ), ( unsigned char * )( aSrc.c_str( ) ), n );
        }
        else if ( aOp == 2 )
        {  //  Base64Encode
            buf->Size = n * 4 / 3 + 1;
            Base64Encode( ( char * )( buf->Memory ), ( unsigned char * )( aSrc.c_str( ) ), n );
        }
        else
        {
            buf->Size = n + 1;
            if ( aOp == 1 )  //  QPDecode
                n = QPDecode( ( unsigned char * )( buf->Memory ), aSrc.c_str( ) );
            else             //  Base64Decode

                n = Base64Decode( ( unsigned char * )( buf->Memory ), aSrc.c_str( ) );
            ( ( char * )( buf->Memory ) )[n] = 0;
        }
        s = AnsiString( ( char * )( buf->Memory ) );
    }
    __finally
    {
        delete buf;
    }
    return s;
}
*/
//  在 Delphi 中則要編寫下面這個單元:
/*
Unit Mime;

Interface

Function MimeQPBase64( aSrc : String; aOp : Integer ) : String;

Implementation

{$L mimeb64.obj}

Function QPEncode(     aDest : PChar; aSrc : PByte; aLen : Integer ) : Integer; External;
Function QPDecode(     aDest : PByte; aSrc : PChar                 ) : Integer; External;
Function Base64Encode( aDest : PChar; aSrc : PByte; aLen : Integer ) : Integer; External;
Function Base64Decode( aDest : PByte; aSrc : PChar                 ) : Integer; External;

//  因為DELPHI不包含string.h中的函數,所以要寫這么個函數
Function _strlen( aStr : PChar ) : Integer; cdecl;
Begin
    Result := Leng

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品毛片网大全| 精品视频偷偷看在线观看| 国产精品亚洲第一区| 国产福利精品在线| 日本成人精品在线| 精品电影在线观看| 精品欧美一区二区三区| 久久久久久伊人| 国产精品美女www爽爽爽视频| 成人疯狂猛交xxx| 91欧美视频网站| 日韩av在线网址| 激情久久av一区av二区av三区| 97香蕉超级碰碰久久免费软件| 国产精品久久久久久av福利| 亚洲欧美日韩中文视频| 国产精品都在这里| 欧美色视频日本版| 日韩视频在线免费观看| 亚洲精品免费av| 国产精品第七十二页| 国产精品女人网站| 日本午夜精品理论片a级appf发布| 日韩专区中文字幕| 亚洲18私人小影院| 国产精品视频一区二区高潮| 亚洲国产中文字幕久久网| 久久最新资源网| 九九视频直播综合网| 亚洲免费一级电影| 久久精品中文字幕免费mv| 亚洲老板91色精品久久| 国产欧美婷婷中文| 国产日韩欧美在线看| 日韩av在线网站| 中文字幕一精品亚洲无线一区| 国产精品久久久久久网站| 国产精品免费久久久| 国产精品白丝jk喷水视频一区| 亚洲在线免费观看| www.久久久久久.com| 黑人巨大精品欧美一区二区三区| 国内精品视频在线| 国产精品日韩在线| 亚洲欧美精品伊人久久| 免费99精品国产自在在线| 久久亚洲精品成人| 国产日韩欧美在线播放| 精品小视频在线| 午夜精品蜜臀一区二区三区免费| 日韩在线播放视频| 亚洲欧洲日产国码av系列天堂| 国产成人免费91av在线| 亚洲色图第三页| 亚洲黄页网在线观看| 亚洲人成毛片在线播放| 国产精品6699| www.欧美精品一二三区| 久久久久久久久久久国产| 亚洲美女性视频| 久久中文字幕视频| 久久精彩免费视频| 成人激情视频网| 日韩电影在线观看免费| 日韩精品高清在线| 亚洲第一精品福利| 国产美女精品视频免费观看| 欧美一区二粉嫩精品国产一线天| 欧洲美女7788成人免费视频| 亚洲人成电影在线| 97**国产露脸精品国产| 中文字幕日韩在线视频| 精品国模在线视频| 91精品一区二区| 热草久综合在线| 国产亚洲视频中文字幕视频| 亚洲国产成人一区| 久久99热这里只有精品国产| 色樱桃影院亚洲精品影院| 有码中文亚洲精品| 国产中文字幕亚洲| 91精品国产免费久久久久久| www.亚洲天堂| 欧美精品videos| 亚洲人成毛片在线播放| 国产成人高潮免费观看精品| 亚洲欧洲中文天堂| 亚洲综合在线小说| 亚洲国产精品大全| 日韩精品中文字幕在线| 亚洲jizzjizz日本少妇| 久久99久国产精品黄毛片入口| 日韩大胆人体377p| 在线色欧美三级视频| 91大神福利视频在线| 国产成人精品免高潮费视频| 日韩中文第一页| 日韩av中文字幕在线免费观看| 国产精品亚洲第一区| 欧美超级免费视 在线| 国产欧美日韩精品在线观看| 日韩精品高清在线| 欧美另类极品videosbest最新版本| 亚洲人成电影在线观看天堂色| 91人人爽人人爽人人精88v| 欧美一级电影免费在线观看| 色婷婷综合久久久久| 日韩国产欧美精品在线| 成人免费在线视频网站| 欧美日韩成人在线视频| 亚洲欧洲在线播放| 另类专区欧美制服同性| 国产又爽又黄的激情精品视频| 亚洲成人网av| 亚洲丁香婷深爱综合| 国产精品av电影| 久久精品99久久香蕉国产色戒| 91免费视频网站| 亚洲色图第一页| 中文字幕欧美日韩va免费视频| 51精品在线观看| 激情av一区二区| 成人高h视频在线| 亚洲sss综合天堂久久| 欧美大片在线影院| 一区三区二区视频| 国产美女91呻吟求| 成人网在线视频| 欧美电影免费在线观看| 国产精品视频资源| 午夜欧美大片免费观看| 国外成人在线播放| 欧美极品少妇全裸体| 国产成人精品在线观看| 欧美亚洲免费电影| 国产日韩精品综合网站| 国产69精品久久久久99| 国产999精品久久久| 成人写真福利网| 国产精品麻豆va在线播放| 91九色国产社区在线观看| 日韩av电影院| 色偷偷88888欧美精品久久久| 精品欧美aⅴ在线网站| 欧美日韩国产综合新一区| 欧美精品免费在线观看| 欧美一级在线亚洲天堂| 免费97视频在线精品国自产拍| 97人人模人人爽人人喊中文字| 青草青草久热精品视频在线观看| 亚洲午夜国产成人av电影男同| 亚洲va国产va天堂va久久| 高清在线视频日韩欧美| 成人在线中文字幕| 91情侣偷在线精品国产| www亚洲欧美| 亚洲免费av片| 欧美最猛性xxxxx亚洲精品| 亚洲视屏在线播放| 亚洲成人免费网站| 国产日韩在线精品av| 久久成人人人人精品欧| 亚洲欧美日韩图片| 亚洲国产精品久久|