base64编码 回车转换的问题 解决的领奖100分

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:25:30
#include <iostream>
#include "ZBase64.h"
#include <fstream>
using namespace std;
int EncodeBase64(const unsigned char* pSrc, char* pDst, int nSrcLen)
{
const char EnBase64Tab[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
unsigned char c1, c2, c3; // 输入缓冲区读出3个字节
int nDstLen = 0; // 输出的字符计数
int nLineLen = 0; // 输出的行长度计数
int nDiv = nSrcLen / 3; // 输入数据长度除以3得到的倍数
int nMod = nSrcLen % 3; // 输入数据长度除以3得到的余数

// 每次取3个字节,编码成4个字符
for (int i = 0; i < nDiv; i ++)
{
// 取3个字节
c1 = *pSrc++;
c2 = *pSrc++;
c3 = *pSrc++;

// 编码成4个字符
*pDst++ = EnBase64Tab[c1 >> 2];
*pDst++ = EnBase64Tab[((c1 << 4) | (c2 >> 4)) & 0x3f];
*pDst++ = EnBase64Tab[((c2 << 2) | (c3 >> 6)

首先,换行符Unix用的LF(\n),Windows用的是CRLF(\r\n),看这里http://www.cppblog.com/ichenq/archive/2009/08/17/93646.html