码迷,mamicode.com
首页 > 其他好文 > 详细

机内码到Base64的编码转换

时间:2014-11-03 22:33:36      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:中文信息处理   base64   

Base64是一种将二进制转为可打印字符的编码方法,主要用于邮件传输。Base64就是将64个字符(A-Z,a-z,0-9,+,/)作为基本字符集,把所有符号转换为这个字符集中的字符。为了将机内码转换为Base64编码,首先建立一个Base64码表(如下图),每次从输入流中取6bit,将此6bit作为下标查找Base64码表,输入对应字符。这样,没3字节机内码被转换为4字节的Base64编码。编码的结果出现最后不满4个字符时用 “=”填充。

              bubuko.com,布布扣

                                                                            Base64码表

代码如下:

#include<stdio.h>
char table[64]=
{
	'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','+','/'
};
void conv(unsigned char src[],unsigned char des[])
{
	des[0]=src[0]>>2;
	unsigned char tmp=((src[0]&0X03)<<4);
	des[1]=tmp|(src[1]>>4);
	tmp=((src[1]&0X0F)<<2);
	des[2]=tmp|(src[2]>>6);
	des[3]=src[2]&0X3F;
	for(int i=0;i<4;i++)
	{
		des[i]=table[des[i]];
	}
}
void main()
{
	FILE*fp1=fopen("in.txt","rb");
	FILE*fp2=fopen("out.txt","wt");
	unsigned char src[4]={0};
	unsigned char des[5]={0};
	int c;
	while((c=fread(src,sizeof(unsigned char),3,fp1))==3)
	{
		conv(src,des);
		fprintf(fp2,"%s",des);
	}
	if(c==1)
	{
		src[1]=src[2]=0;
		conv(src,des);
		des[2]=des[3]='=';
		fprintf(fp2,"%s",des);
	}
	if(c==2)
	{
		src[2]=0;
		conv(src,des);
		des[3]='=';
		fprintf(fp2,"%s",des);
	}
	fclose(fp1);
	fclose(fp2);
}


机内码到Base64的编码转换

标签:中文信息处理   base64   

原文地址:http://blog.csdn.net/u010839382/article/details/40748887

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!