⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base64.cpp

📁 一个在redhat下面做的邮件收发程序
💻 CPP
字号:
#include "base64.h"int Base64::Encode(char *buf, char*text,int size){    static char* base64_encoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";    int buflen = 0;    while(size>0)    {    *buf++ = base64_encoding[ (text[0] >> 2 ) & 0x3f];    if(size>2)    {        *buf++ = base64_encoding[((text[0] & 3) << 4) | (text[1] >> 4)];        *buf++ = base64_encoding[((text[1] & 0xF) << 2) | (text[2] >> 6)];        *buf++ = base64_encoding[text[2] & 0x3F];    }    else    {    switch(size)    {        case 1:            *buf++ = base64_encoding[(text[0] & 3) << 4 ];            *buf++ = '=';            *buf++ = '=';            break;        case 2:            *buf++ = base64_encoding[((text[0] & 3) << 4) | (text[1] >> 4)];            *buf++ = base64_encoding[((text[1] & 0x0F) << 2) | (text[2] >> 6)];            *buf++ = '=';            break;    }    }    text +=3;    size -=3;    buflen +=4;    }    *buf = 0;    return buflen;}//base64解码的实现char Base64::GetIndex(char ch){    if ((ch >= 'A') && (ch <= 'Z'))        return ch - 'A';    if ((ch >= 'a') && (ch <= 'z'))        return ch - 'a' + 26;    if ((ch >= '0') && (ch <= '9'))        return ch - '0' + 52;    switch (ch)    {        case '+':            return 62;        case '/':            return 63;        case '=': /* base64 padding */            return 0;        default:            return 0;    }}//进行base64解码输入应该是4的倍数(根据mime标准)//如果不是4倍数返回错误//注意 如果是最后一个字符 那么长度不准备 可能会多1//返回buf长度int Base64::Decode(char *buf,char*text,int size){    if(size%4)        return -1;    unsigned char chunk[4];    int parsenum=0;    while(size>0)    {        chunk[0] = GetIndex(text[0]);        chunk[1] = GetIndex(text[1]);        chunk[2] = GetIndex(text[2]);        chunk[3] = GetIndex(text[3]);        *buf++ = (chunk[0] << 2) | (chunk[1] >> 4);        *buf++ = (chunk[1] << 4) | (chunk[2] >> 2);        *buf++ = (chunk[2] << 6) | (chunk[3]);        text+=4;        size-=4;        parsenum+=3;    }    return parsenum;} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -