使用Atl Base64 对文件编解码
来源:互联网 发布:软件维护手册 编辑:程序博客网 时间:2024/06/18 17:22
#include "atlenc.h"errno_t fileBase64Encode(const char *srcFile, const char *dstFile){ FILE *fr = NULL, *fw = NULL; errno_t err = 0; if(err == 0) { err= fopen_s(&fr, srcFile, "rb"); if(err != 0) { printf( "The file '%s' can't be open\n", srcFile ); } } if (err == 0) { err = fopen_s(&fw, dstFile, "wb"); if(err != 0) { printf( "The file '%s' can't be open\n", dstFile ); } } if(err == 0) { const int tLen = ATLSMTP_MAX_BASE64_LINE_LENGTH; // = 57 BYTE srcBuf[tLen + 1]; char dstBuf[tLen * 4 /3 + 5]; //+\r\n\r\n\0 // size_t nTotal = 0; while(!feof(fr)) { int nLen = fread(srcBuf, 1, tLen, fr); int i = Base64EncodeGetRequiredLength(nLen); Base64Encode(srcBuf, nLen, dstBuf, &i); nTotal += fwrite(dstBuf, 1, i, fw); } } if(fr) fclose(fr); if(fw) fclose(fw); return err;}errno_t fileBase64Decode(const char *srcFile, const char *dstFile){ FILE *fr = NULL, *fw = NULL; errno_t err = 0; if(err == 0) { err= fopen_s(&fr, srcFile, "rb"); if(err != 0) { printf( "The file '%s' can't be open\n", srcFile ); } } if (err == 0) { err = fopen_s(&fw, dstFile, "wb"); if(err != 0) { printf( "The file '%s' can't be open\n", dstFile ); } } if(err == 0) { const int tLen = ATLSMTP_MAX_QP_LINE_LENGTH + 2; //76+2 char srcBuf[tLen+1]; BYTE dstBuf[tLen*3/4+1]; size_t nTotal = 0; while(!feof(fr)) { int nLen = fread(srcBuf, 1, tLen, fr); int i = Base64DecodeGetRequiredLength(nLen); Base64Decode(srcBuf, nLen, dstBuf, &i); nTotal += fwrite(dstBuf, 1, i, fw); } } if(fr) fclose(fr); if(fw) fclose(fw); return err;}
- 使用Atl Base64 对文件编解码
- 使用Base64编解码
- Go使用Base64编解码
- 使用NDK实现的Base64编/解码
- VB Base64编解码
- Base64编解码原理
- BASE64编解码
- openssl base64 编、解码
- base64编解码
- Java:Base64编解码
- Base64编解码
- Base64编解码(C)
- Base64编解码(JS)
- base64编解码
- android base64编解码
- BASE64编解码
- BASE64编解码
- base64编解码
- 日语的电脑与互联网
- HTTP协议简介
- 三类运动让你变胖还不健康
- sql server 2008评估期已到 不能打开数据库了
- 日语的气候与环境
- 使用Atl Base64 对文件编解码
- 为什么工程下webroot始终存在
- MFC,C++,Vector使用
- <每日一句英语> 2012-9-29
- linux下为分区设定label
- GDB小结
- 进度条部分修改笔记
- sqlserver建表遇到的只能插入时间,不能插入日期的问题
- 儿子的生日