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

📄 base64.c

📁 邮件发送后向相应手机发送短信
💻 C
字号:
/* ** Author:  Daniel Stenberg <Daniel.Stenberg@haxx.nu>** Version: 0.1**** This is a Base64 encoder as defined in RFC 2045. If the output is gonna be** used in a mail body: "The encoded output stream must be represented in** lines of no more than 76 characters each."*** CHANGES by Daniel Stenberg. May 11, 1998:** - Encoded strings that ended with more than one = caused the decode *   function+ to generate 3 extra zero bytes at the end of the output.*/#include "main.h"void base64Decode(char *intext, char *out, int *length){    unsigned char ibuf[4];    unsigned char obuf[3];    char ignore;    char endtext=FALSE;    char ch;    int index=0;    *length = 0;      memset(ibuf, 0, sizeof(ibuf));    while (*intext) {        ch = *intext;            ignore = FALSE;        if ((ch >= 'A') && (ch <= 'Z'))            ch = ch - 'A';        else if ((ch >= 'a') && (ch <= 'z'))            ch = ch - 'a' + 26;        else if ((ch >= '0') && (ch <= '9'))            ch = ch - '0' + 52;        else if (ch == '+')            ch = 62;        else if (ch == '=') { /* end of text */            if (endtext)                break;            endtext = TRUE;            index--;            if (index < 0)                index = 3;        }        else if (ch == '/')            ch = 63;        else if (endtext)            break;        else            ignore = TRUE;                 if (!ignore) {            if (!endtext) {               ibuf[index] = ch;                   index ++;               index &= 3; /* use bit arithmetic instead of remainder */            }            if ((0 == index) || endtext) {                    obuf [0] = (ibuf [0] << 2) | ((ibuf [1] & 0x30) >> 4);                obuf [1] = ((ibuf [1] & 0x0F) << 4) | ((ibuf [2] & 0x3C) >> 2);                obuf [2] = ((ibuf [2] & 0x03) << 6) | (ibuf [3] & 0x3F);                    switch(index) {                    case 1:                      sprintf(out, "%c", obuf[0]);                      out++;                      (*length)++;                      break;                    case 2:                      sprintf(out, "%c%c", obuf[0], obuf[1]);                      out+=2;                      (*length)+=2;                      break;                    default:                      sprintf(out, "%c%c%c", obuf[0], obuf[1], obuf[2]);                      out+=3;                      (*length)+=3;                      break;                }                memset(ibuf, 0, sizeof(ibuf));            }              }        intext++;    }    *out=0;}

⌨️ 快捷键说明

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