栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言base64编解码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言base64编解码

 参考网上的代码整理后的base64编解码,纯工具类代码。

static const char *ALPHA_BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

char *base64_encode (unsigned char *data, int size) {
    char *d, buf[3];
    int i, j, d_len;

    if (!data || size <= 0)
        return NULL;

    d_len = size * 4 + 10;
    d = (char *)malloc(d_len);
    if (!d)
        return NULL;

    memset(d, 0, d_len);
    for (i = 0, j = 0; i < size; ) {
        buf[0] = data[i++];
        buf[1] = i < size ? data[i++] : '';
        buf[2] = i < size ? data[i++] : '';
        
        d[j++] = ALPHA_BASE64[(buf[0] >> 2) & 0x3F];
        d[j++] = ALPHA_BASE64[((buf[0] << 4) | ((buf[1] & 0xFF) >> 4)) & 0x3F];
        d[j++] = ALPHA_BASE64[((buf[1] << 2) | ((buf[2] & 0xFF) >> 6)) & 0x3F];
        d[j++] = ALPHA_BASE64[buf[2] & 0x3F];
    }
    
    switch (size % 3) {
        case 1: d[--j] = '=';
        case 2: d[--j] = '=';
    }
    return d;
}

unsigned char *base64_decode (const char *s, int *size) {
    int i, j, s_len, size2;
    int to_int[128] = {-1};
    char buf[4] = {0};
    unsigned char *data;

    if (!s || *s == 0)
        return NULL;

    s_len = strlen(s);
    size2 = s_len + 10;
    data = (unsigned char *)malloc(size2);
    if (!data)
        return NULL;

    for (i = 0; i < 64; i++)
        to_int[ALPHA_BASE64[i]] = i;

    memset(data, 0, size2);
    for (i = 0, j = 0; i < s_len; i += 4) {
        buf[0] = to_int[s[i]];
        buf[1] = to_int[s[i + 1]];
        data[j++] = (((buf[0] << 2) | (buf[1] >> 4)) & 0xff);
        buf[2] = to_int[s[i + 2]];
        data[j++] = (((buf[1] << 4) | (buf[2] >> 2)) & 0xff);
        buf[3] = to_int[s[i + 3]];
        data[j++] = (((buf[2] << 6) | buf[3]) & 0xff);
    }

    if (size) *size = size2;
    return data;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980069.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号