資源簡介
MFC郵件客戶端(支持收發郵件)
代碼片段和文件信息
#include?“StdAfx.h“
#include?“base64.h“
//?靜態成員初始化7-bit?字母表.
CString?Cbase64::m_sbase64Alphabet?=?
_T(?“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/“?);
Cbase64::Cbase64(void)
{
}
Cbase64::~Cbase64(void)
{
}
//---------------------------------------------------------------------------
CString?Cbase64::Encode(LPCTSTR?szEncodingint?nSize)
{
CString?sOutput?=?_T(?““?);
int?nNumBits;
UINT?nDigit;
int?lp?=?0;
if(?szEncoding?==?NULL?)
return?sOutput;
m_szInput?=?szEncoding;
m_nInputSize?=?nSize;
m_nBitsRemaining?=?0;
nDigit?=?ReadBits(&nNumBits?lp?);
while(?nNumBits?>?0?)
{
sOutput?+=?m_sbase64Alphabet[?(int)nDigit?];
nDigit?=?ReadBits(&nNumBits?lp?);
}
while(?sOutput.GetLength()?%?4?!=?0?)
{
sOutput?+=?‘=‘;
}
return?sOutput;
}
//---------------------------------------------------------------------------
//?輸出緩沖區大小不小于?3/4?輸入緩沖區大小.?為了簡便它們的大小取為一致.
int?Cbase64::Decode(LPCTSTR?szDecoding?LPTSTR?szOutput)
{
????int?c?lp?=0;
int?i;
int?nDigit;
????int?nDecode[?256?];
ASSERT(?szDecoding?!=?NULL?);
ASSERT(?szOutput?!=?NULL?);
if(?szOutput?==?NULL?)??
return?0;
if(?szDecoding?==?NULL?)
return?0;
CString?sInput?=?szDecoding;
if(?sInput.GetLength()?==?0?)
return?0;
//?建立解碼表.
for(?int?i?=?0;?i?256;?i++?)?
nDecode[i]?=?-2;?//?非法數字.
for(i=0;?i?64;?i++?)
{
nDecode[?m_sbase64Alphabet[?i?]?]?=?i;
nDecode[?m_sbase64Alphabet[?i?]?|?0x80?]?=?i;?//?忽略8th?bit.
nDecode[?‘=‘?]?=?-1;?
nDecode[?‘=‘?|?0x80?]?=?-1;?
????}
//?清除輸出緩沖區.
memset(?szOutput?0?sInput.GetLength()?+?1?);
//?對輸入數據進行解碼.
for(?lp?=?0?i?=?0;?lp? {
c?=?sInput[?lp?];
nDigit?=?nDecode[?c?&?0x7F?];
if(?nDigit?-1?)?
{
return?0;
}?
else?if(?nDigit?>=?0?)?
WriteBits(?nDigit?&?0x3F?szOutput?i?);
????}
return?i;
}
//---------------------------------------------------------------------------
UINT?Cbase64::ReadBits(int?*?pBitsRead?int&?lp)
{
????ULONG?lScratch;
????while(?(?m_nBitsRemaining?6?)?&&?
???(?lp? {
int?c?=?m_szInput[?lp++?];
????????m_lBitStorage?<<=?8;
????????m_lBitStorage?|=?(c?&?0xff);
m_nBitsRemaining?+=?8;
????}
????if(?m_nBitsRemaining?6?)?
{
lScratch?=?m_lBitStorage?<(?6?-?m_nBitsRemaining?);
*pBitsRead?=?m_nBitsRemaining;
m_nBitsRemaining?=?0;
????}?
else?
{
lScratch?=?m_lBitStorage?>>?(?m_nBitsRemaining?-?6?);
*pBitsRead?=?6;
m_nBitsRemaining?-=?6;
????}
????return?(UINT)lScratch?&?0x3F;
}
//---------------------------------------------------------------------------
void?Cbase64::WriteBits(UINT?nBits?LPTSTR?szOutput?int&?i)
{
UINT?nScratch;
m_lBitStorage?=?(m_lBitStorage?<6)?|?nBits;
m_nBitsRemaining?+=?6;
while(?m_nBitsRemaining?>?7?)?
{
nScratch?=?m_lBitStorage?>>?(m_nBitsRemaining?-?8);
szOutput[?i++?]?=?nScratch?&?0xFF;
m_nBitsRemaining?-=?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-10-25?10:50??MailClient\
?????目錄???????????0??2013-10-25?10:50??MailClient\Debug\
?????文件??????219136??2013-10-24?19:46??MailClient\Debug\MailClient.exe
?????文件?????1763972??2013-10-24?19:46??MailClient\Debug\MailClient.ilk
?????文件?????5409792??2013-10-24?19:46??MailClient\Debug\MailClient.pdb
?????目錄???????????0??2013-10-25?10:50??MailClient\MailClient\
?????文件????????3076??2013-10-22?10:05??MailClient\MailClient\ba
?????文件?????????517??2013-10-22?09:56??MailClient\MailClient\ba
?????目錄???????????0??2013-10-25?10:50??MailClient\MailClient\Debug\
?????文件???????20176??2013-10-24?19:33??MailClient\MailClient\Debug\ba
?????文件???????78528??2013-10-24?19:46??MailClient\MailClient\Debug\CL.read.1.tlog
?????文件???????23168??2013-10-24?19:46??MailClient\MailClient\Debug\CL.write.1.tlog
?????文件???????22062??2013-10-14?20:26??MailClient\MailClient\Debug\DAO_ACCESSDlg.obj
?????文件???????73834??2013-10-24?19:33??MailClient\MailClient\Debug\LoginDlg.obj
?????文件?????????667??2013-10-11?13:28??MailClient\MailClient\Debug\MailClient.exe.em
?????文件?????????732??2013-10-11?13:28??MailClient\MailClient\Debug\MailClient.exe.em
?????文件?????????381??2013-10-24?19:46??MailClient\MailClient\Debug\MailClient.exe.intermediate.manifest
?????文件??????????64??2013-10-24?20:04??MailClient\MailClient\Debug\MailClient.lastbuildstate
?????文件????????1047??2013-10-24?20:04??MailClient\MailClient\Debug\MailClient.log
?????文件???????29793??2013-10-24?19:33??MailClient\MailClient\Debug\MailClient.obj
?????文件????34406400??2013-10-24?19:33??MailClient\MailClient\Debug\MailClient.pch
?????文件???????73048??2013-10-24?19:33??MailClient\MailClient\Debug\MailClient.res
?????文件?????????707??2013-10-11?13:27??MailClient\MailClient\Debug\MailClient.vcxprojResolveAssemblyReference1.cache
?????文件???????????0??2013-10-11?13:27??MailClient\MailClient\Debug\MailClient.write.1.tlog
?????文件??????101824??2013-10-24?19:46??MailClient\MailClient\Debug\MailClientDlg.obj
?????文件?????????210??2013-10-11?13:28??MailClient\MailClient\Debug\MailClient_manifest.rc
?????文件???????19843??2013-10-14?21:21??MailClient\MailClient\Debug\MailSmtp.obj
?????文件???????29385??2013-10-24?19:33??MailClient\MailClient\Debug\Pop3.obj
?????文件???????20605??2013-10-24?19:33??MailClient\MailClient\Debug\Smtp.obj
?????文件???????12599??2013-10-24?19:33??MailClient\MailClient\Debug\WSocket.obj
?????文件???????89843??2013-10-24?19:33??MailClient\MailClient\Debug\WriteDlg.obj
............此處省略128個文件信息
- 上一篇:人臉識別C++源碼
- 下一篇:Makefile教程-經典
評論
共有 條評論