/************************************************************************/ /* Copyright (C), 2016-2020, [IT], ��������Ȩ��; /* ģ �� ����; /* �� ����; /* /* �� ����[V]; /* �� �ߣ�[IT]; /* �� �ڣ�[5/24/2016]; /* /* /* ע �⣺; /* /* �ļ�¼��[IT]; /* �����ڣ�; /* �İ汾��; /* �����ݣ�; /************************************************************************/ #ifndef __BASE64_CODE__ #define __BASE64_CODE__ #pragma once class CBase64 { public: CBase64(void); ~CBase64(void); /************************************************************************/ /* ������[5/24/2016 IT]; /* ��������ȡָ���ַ������ȶ�Ӧ��Base64�ַ�����; /* ������; /* [IN] len��Ҫ������ַ�����; /* ���أ�����ָ������len���ַ���ת��Ϊ����Base64��Ӧ�ij���,�����һ��'\0'������; /* ע�⣺; /************************************************************************/ static int CalcBase64Len(IN const size_t& len) { return (len / 3 + (len % 3 ? 1 : 0)) * 4 + 1; // one more byte for '\0' } static void binToBase64(IN const unsigned char *pbinary, IN size_t nbinaryLen, OUT char *pOutBase64); /************************************************************************/ /* ������[5/24/2016 IT]; /* ��������ȡָ��Base64�ַ������ȶ�Ӧ���ֽڳ���; /* ������; /* [IN] len��Ҫ�����Base64�ַ�����; /* ���أ�����ָ������len��Base64�ַ���ת��Ϊ�ֽڶ�Ӧ�ij���; /* ע�⣺; /************************************************************************/ static int CalcBinLen(size_t len) { return len / 4 * 3; } static int base64ToBin(IN const char *pBase64, OUT unsigned char *pbinary, IN size_t maxLen); private: static char decode64(unsigned char ch) { return ch < 128 ? sm_base64val[ch] : BAD; } private: enum {BAD = -1}; // ������ASCII�ַ�; static const char sm_base64digits[65]; // ������ASCII�ַ�; static const char sm_base64val[128]; }; #endif // __BASE64_CODE__