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;
}
相关文章
|
3月前
|
存储 编解码 算法
超级好用的C++实用库之Base64编解码
超级好用的C++实用库之Base64编解码
141 2
|
4月前
|
存储 XML 数据格式
深入理解Base64编码
【8月更文挑战第20天】
171 0
|
7月前
|
存储 算法 JavaScript
base64编码是啥?
base64编码是啥?
73 0
|
数据采集 算法 安全
Base64 编码原理 && 实现
Base64 编码原理 && 实现
102 0
|
存储 编解码 自然语言处理
kali base64 编码和解码
kali base64 编码和解码
315 0
C#使用base64对字符串进行编码和解码的测试
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
C#使用base64对字符串进行编码和解码的测试
|
存储 索引
Base64编码
通过阅读本篇文章,你可以了解到: 1、Base64 编码的作用 2、Base64 编码的规则 3、Base64 索引表
235 0
Base64编码
|
Java
小程序中base64解码/编码
很多人都在为小程序如何实现base64编码/解码困扰,于是我参考前端大佬们对JavaScript中实现base64的文章进行了改写。简单实现了一个。。希望能帮助到小程序开发一线的大家吧、 不多说直接上代码: /** * UTF16和UTF8转换对照表 * U+00000000 – U+000000...
4903 13
|
前端开发 JavaScript
前端实现 base64 编码和解码
前端实现 base64 编码和解码
582 0
前端实现 base64 编码和解码
|
编解码 Go 区块链
Go语言实现Base64、Base58编码与解码
目录 1. 常见的编码 2. go语言实现base64的编码与解码 2.1 Base64编码原理 2.2 实现Base64的编码与解码 3. go语言实现base58编码与解码 3.1 base58的编码过程 3.2 base58编解码具体实现 4. 最后
400 0
Go语言实现Base64、Base58编码与解码