base64解码工具

简介: base64解码工具

个人开发的,主要供软件开发者进行base64码校对使用。


界面如下:


1356511912_7804.jpg

 

生成base64的函数代码如下:


static char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int Base64Enc(const char *src, int len, char *r)
{
  unsigned char* q=(unsigned char*)src;
  char *p = r;
  for(; len >= 3; len -= 3, q += 3)
  {
      *p++ = base64[q[0] >> 2];
      *p++ = base64[((q[0] & 0x3) << 4) | (q[1] >> 4)];
    *p++ = base64[((q[1] & 0xF) << 2) | (q[2] >> 6)];
    *p++ = base64[q[2] & 0x3F];
  }
  if(len > 0)
  {
      *p++ = base64[q[0] >> 2];
    if(len == 1 )
    {
        *p++ = base64[(q[0] & 0x3) << 4];
      *p++ = '=';
    }
    else // len == 2
    {
        *p++ = base64[((q[0] & 0x3) << 4) | (q[1] >> 4)];
      *p++ = base64[(q[1] & 0xF) << 2];
    }
    *p++ = '=';
    }
  return p - r;
}


base64解码的源代码函数如下:


static int get6bits(char c)
{
  if(c >= 'A' && c <= 'Z')
    return c - 'A';
  if(c >= 'a' && c <= 'z')
    return c - 'a' + 26;
  if(c >= '0' && c <= '9')
    return c - '0' + 52;
  if(c == '+')
    return 62;
  if(c == '/')
    return 63;
  return -1;
}
int Base64Dec(const char *src, int len, char *r)
{
  char *p = r;
  int i, bits, code;
  int k = 0; // 指示当前code中的bit数
  for(i=0; i<len; i++)
  {
    bits = get6bits(src[i]);
    if(bits < 0)
      break;
    if(k == 0)
    {
      code = (bits << 2);
      k = 6;
    }
    else if(k == 6)
    {
      code |= (bits >> 4);
      *p++ = code;
      k = 4;
      code = (bits << 4);
    }
    else if(k == 4)
    {
      code |= (bits >> 2);
      *p++ = code;
      k = 2;
      code = (bits << 6);
    }
    else if(k == 2)
    {
      code |= bits;
      *p++ = code;
      k = 0;
    }
  }
  return p - r;
}
相关文章
|
网络协议 测试技术 网络安全
一起玩转树莓派(5)——让蜂鸣器播放音乐
前面博客中,我们尝试使用开关控制有源蜂鸣器的播放。有源蜂鸣器的一大特点是使用简单,无需复杂的程序控制即可发声,然而其缺陷也很明显,其发声的频率是一定的,我们无法通过频率控制器音调高低。本次实验,我们将尝试使用无源蜂鸣器来进行音乐的播放。
1739 0
一起玩转树莓派(5)——让蜂鸣器播放音乐
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
基于python大数据的小说数据可视化及预测系统
本研究基于Python构建小说数据可视化与预测系统,整合多平台海量数据,利用爬虫、数据分析及机器学习技术,实现热度趋势预测与用户偏好挖掘。系统结合Django、Vue等框架,提供动态交互式可视化界面,助力平台精准运营、作者创作优化与读者个性化阅读体验,推动网络文学数据智能化发展。
|
11月前
|
SQL 人工智能 分布式计算
大厂面试官最看重的大数据证书:让你的简历脱颖而出
不要只说"我考了XX证",要结合证书项目讲解:"在准备CCP认证时,我通过优化Hive查询将ETL任务耗时从4小时缩短到27分钟,这个方案后来被应用到..."
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
482 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
存储 数据挖掘 数据处理
【破晓数据湖新时代!】巴别时代揭秘:Apache Paimon 打造 Streaming Lakehouse 的神奇之旅!
【8月更文挑战第9天】随着数据湖技术的发展,企业积极探索优化数据处理的新途径。Apache Paimon 作为一款高性能数据湖框架,支持流式与批处理,适用于实时数据分析。本文分享巴别时代使用 Paimon 构建 Streaming Lakehouse 的实践经验。Paimon 统一了数据存储与查询方式,对构建实时数据管道极具价值。
857 3
|
SQL 关系型数据库 MySQL
在 MySQL 中使用 IS NULL
【8月更文挑战第12天】
1206 0
在 MySQL 中使用 IS NULL
|
机器学习/深度学习 监控 算法
聚类
聚类就是把数据对象集合按照相似性划分成多个子集的过程(如下图)。其中,每个子集称为一个簇。聚类不仅要使簇中的对象彼此相似,而且要与其他簇中的对象相似**。聚类是无监督学习,数据不需要类标号(标注)信息。
1397 0
聚类
|
PHP 数据安全/隐私保护
验证码识别工具——Pkav HTTP Fuzzer
验证码识别工具——Pkav HTTP Fuzzer
1202 0
|
C++
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
8085 0

热门文章

最新文章