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

📄 base64.cpp

📁 实现base64编解码运算
💻 CPP
字号:
// base64.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "string.h"

typedef unsigned char  BYTE;
typedef unsigned long  DWORD;

BYTE* Base64Decode(char *base64code, DWORD base64length);

int main(int argc, char* argv[])
{
	printf("Hello World!\n");

char src[] = "xOO6w6OsU25haVgNCg0KoaGhodXiysfSu7j2QmFzZTY0tcSy4srU08q8/qOhDQoNCkJlc3QgV2lz\
aGVzIQ0KIAkJCQkNCqGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaEgICAgICAgICAgICAgICBl\
U1g/IQ0KoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoSAgICAgICAgICAgICAgIHNuYWl4QHll\
YWgubmV0DQqhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhICAgICAgICAgMjAwMy0x\
Mi0yNQ0K";

    BYTE* des;

    des = Base64Decode( src, strlen(src) );

	printf("the result = %s\n", (const char*)des );


	return 0;
}

BYTE LMoveBit(int base, int MoveNum) 
{ 
	BYTE result=base; 
	if(MoveNum==0)return 1; 
	if(MoveNum==1)return MoveNum; 
	result=base<<(MoveNum-1); 
	return result; 
} 

char base64_alphabet[]= 
{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', 
'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', 
'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', 
'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/','='}; 

BYTE* Base64Decode(char *base64code, DWORD base64length) 
{ 
	char buf[4]; 
	int i,j; 
	int k; 
	int l=0; 
	BYTE temp1[4],temp2; 
	BYTE *Buffer=new BYTE[base64length*3/4]; 
	DWORD base64a=(base64length/4)-1; 
	DWORD base64b=0; 
	for(;base64b<base64a+1;base64b++) 
	{ 
		for(i=0;i<4;i++) 
		{ 
			buf[i]=*(base64code+(base64b*4)+i); 
			for(j=0;j<65;j++) 
			{ 
				if(buf[i]==base64_alphabet[j]) 
				{ 
					temp1[i]=j; 
					break; 
				} 
			} 
		} 
		i--; 
		for(k=1;k<4;k++) 
		{ 
			if(temp1[i-(k-1)]==64){/*m_padnum++;*/ continue;} 
			temp1[i-(k-1)]=temp1[i-(k-1)]/LMoveBit(2,(k-1)*2); 
			temp2=temp1[i-k]; 
			temp2=temp2&(LMoveBit(2,k*2)-1); 
			temp2*=LMoveBit(2,8-(2*k));//move 4 
			temp1[i-(k-1)]=temp1[i-(k-1)]+temp2; 
			Buffer[base64b*3+(3-k)]=temp1[i-(k-1)]; 
		} 
	} 
	return Buffer; 
} 

⌨️ 快捷键说明

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