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

📄 base64.c

📁 关于arm7开发的一个程序
💻 C
字号:
/*****************************************************************************************************
//						广东省科学院自动化研制中心重点实验室电子组
//									
//文件名:			base64.c								
//版本	:			V0.0
//作者  :
//日期  :2006-3-15
//
//其他  :
//www.autocenter.gd.cn
//																		gdpiao@autocenter.gd.cn
********************************************************************************************************/



#define _IN_BASE64_
#include "config.h"
static char Base64_table[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 

/*********************************************************************************
//		int8 Base64_decode(uint8 *src,uint8 *dst)
//参数:uint8 *src	源地址
//		uint8 *dst	目标地址
//
//返回:
**********************************************************************************/
uint16 Base64_decode(uint8 *src,uint8 *dst)
{
	uint16 length,i,j;
	uint8 temp[4];//,DST_TEMP[3500];
	char *p,*p_to_table;
	p_to_table=Base64_table;
	length=strlen((char *)src);//获取源字符串的长度 
	for(i=0;i<length;i++)//解码出源代码
		{
			 
				  p=strchr(Base64_table,src[i]);
				  if(!p)
				  	{
				  		src[i]=0;
				  		break;
				  		}
					 dst[i] = p - p_to_table;
					 //tem_pionter[i]=dst[i];
			}
		if((length%4)!=0) //不是4的倍数
				length=length-length%4;///凑够4的倍数
		//j=length/4;//程序主体要预算的次数
	//**重新组合数据
	
		for(j=0,i=0;j<length;j+=4,i+=3)
		{
			
			temp[0]=(dst[j+0]<<2)+((dst[j+1] & 0x30 )>>4);
			temp[1]=((dst[j+1]& 0x0f)<<4)+((dst[j+2] & 0x3c)>>2);
			temp[2]=((dst[j+2]& 0x03)<<6)+(dst[j+3] & 0x3f);
			////转存到dst

				dst[j+0]=0;
				dst[j+1]=0;
				dst[j+2]=0;
				dst[j+3]=0;	
				///清掉数据 确保不会出现乱码		
				dst[i+0]=temp[0];
				dst[i+1]=temp[1];
				dst[i+2]=temp[2];
			}

length =  strlen((char *)dst);
return length;
	}	
//2005-12-15 14:34

/*********************************************************************************
//		uint8 * Base64_encode(uint8 *src,uint8 *dst)
//参数:uint8 *src	源地址
//		uint8 *dst	目标地址
//
//返回:
**********************************************************************************/

uint8 * Base64_encode(uint8 *src,uint16 srclen)
{
uint16 n,buflen,i,j;
 uint8 pading=0;
 uint8 *buf;
 uint8 *dst; 

 buf=src;
 buflen=n=srclen;
 if(n%3!=0)  /* pad with '=' by using a temp buffer */
 {
  pading=1;
  buflen=n+3-n%3;
  buf=malloc(buflen+1);
  memset(buf,0,buflen+1);
  memcpy(buf,src,n);
  for(i=0;i<3-n%3;i++)
   buf[n+i]='=';
 }
 dst=malloc(buflen*4/3+1);
 memset(dst,0,buflen*4/3+1);
 for(i=0,j=0;i<buflen;i+=3,j+=4)
 {
  dst[j]=(buf[i]&0xFC)>>2;
  dst[j+1]=((buf[i]&0x03)<<4) + ((buf[i+1]&0xF0)>>4);
  dst[j+2]=((buf[i+1]&0x0F)<<2) + ((buf[i+2]&0xC0)>>6);
  dst[j+3]=buf[i+2]&0x3F; 
 }
 for(i=0;i<buflen*4/3;i++) /* map 6 bit value to base64 ASCII character */
  src[i]=Base64_table[dst[i]];
  
  free(dst);
 if(pading)
  free(buf);
 return src;
}
 




/******************************************************************************
//	
//													end of file
******************************************************************************/









⌨️ 快捷键说明

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