www.pudn.com > mime.rar > CBase64Algo.h


#ifndef _H_CBase64Algo_
#define _H_CBase64Algo_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "CMimeAlgo.h"
#include <afxtempl.h>


class CBase64Algo : public CMimeAlgo
{
//con de
public:
CBase64Algo();
~CBase64Algo();


//overrided
public:
virtual void Encode( unsigned char ** outBuf, int &amt; outBufLen, unsigned char * inSrcBuf, int inSrcLen );
virtual void Decode( unsigned char ** outBuf, int &amt; outBufLen, unsigned char * inSrcBuf, int inSrcLen );


//implement
protected:
unsigned char mArr[64]; //to help find char from xxxxxx
CMap<unsigned char, unsigned char, unsigned char, unsigned char> mMap; //to help find xxxxxx from char

void EncodeEvery3Byte(unsigned char * outBuf, const unsigned char * const inBuf, int inRest = 0);
unsigned char Get6Bits(const unsigned char * const inBase, int inOffset);

void DecodeEvery4Byte(unsigned char * outBuf, const unsigned char * const inBuf);
void Set6Bits(unsigned char * outBuf, int inOffset, unsigned char in6Bits);
};

#endif