12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /************************************************************************/
- /* 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对应的长度,并多加一个'\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字符串转换为字节对应的长度;
- /* 注意:;
- /************************************************************************/
- 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];
- // mfc版本;
- public:
- #ifndef VC60
- static CStringA StringToBase64A(IN CStringA strSource);
- static CStringW StringToBase64W(IN CStringW strSource);
- static CStringA Base64ToStringA(IN CStringA strBase64);
- static CStringW Base64ToStringW(IN CStringW strBase64);
- #endif
- };
- #endif // __BASE64_CODE__
|