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

📄 base64.c

📁 Base64编码的简单C++语言实现...
💻 C
字号:
#include <stdio.h>
#include <string.h>
typedef unsigned char U08;

U08 ch[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 

void encode(char *src, int src_len, char *dst);
void decode(char *src, int src_len, char *dst);

void encode(char *src, int src_len, char *dst);
{
 	int i,j;
	for (i = 0, j = 0; i < src_len - src_len % 3; i += 3) 
	{
		dst[j++] = base64_map[(src[i] >> 2) & 0x3F];
		dst[j++] = base64_map[((src[i] << 4) & 0x30) + ((src[i + 1] >> 4) & 0xF)];
		dst[j++] = base64_map[((src[i + 1] << 2) & 0x3C) + ((src[i + 2] >> 6) & 0x3)];
		dst[j++] = base64_map[src[i + 2] & 0x3F];
	}
	if (src_len % 3 == 1) 
	{
		dst[j++] = base64_map[(src[i] >> 2) & 0x3F];
		dst[j++] = base64_map[(src[i] << 4) & 0x30];
		dst[j++] = '=';
		dst[j++] = '=';
	}
	else if (src_len % 3 == 2) 
	{
		dst[j++] = base64_map[(src[i] >> 2) & 0x3F];
		dst[j++] = base64_map[((src[i] << 4) & 0x30) + ((src[i + 1] >> 4) & 0xF)];
		dst[j++] = base64_map[(src[i + 1] << 2) & 0x3C];
		dst[j++] = '=';
	}
 return;
}

void decode(char *src, int src_len, char *dst);
{
 int i,j;

if(src_len%4 != 0)return;
 for(i=0; i<src_len; i++)
	 for(j=0; j<64; j++)
	 {
		 if(src[i] == ch[j])
		 {
			 src[i] = j;	
			 break;
		 }
	 } 
	 
 for(i=0,j=0; i<src_len; i+=4,j+=3)
 {
  dst[j]=(src[i]<<2) + ((src[i+1]&0x30)>>4);
  dst[j+1]=((src[i+1]&0x0F)<<4) + ((src[i+2]&0x3C)>>2);
  dst[j+2]=((src[i+2]&0x03)<<6) + src[i+3];
 }
 return;
}

void main()
{	
 U08 src1[] = {'1','2','3','0','a','b','*','0','A','B','$'};
 U08 dst1[1024];
 U08 src2[1024];
 U08 dst2[1024];
 int i;

 encode(dst1,src1,strlen(src1));	//Base64编码	
 printf("%d   \n%s\n",strlen(src1),dst1);

  for ( i= 0 ;i<strlen(dst1); i++)
 	 src2[i] = dst1 [i];
  decode(dst2,src2,strlen(src2));	//Base64解码
  
for(i=0; i<sizeof(src1); i++)
	  printf("%c",dst2[i]);	 
printf("\n"); 
  

}

⌨️ 快捷键说明

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