Base64的编码规则和C#实现
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Base64的编码规则和C#实现相关的知识,希望对你有一定的参考价值。
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一;
Base64的编码规则
Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。
它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。
当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。
BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
三个字节base64编码后变为4个字节;解码又还原;下面来看一下;
private void button1_Click(object sender, EventArgs e)
{
byte[] bytes = Encoding.Default.GetBytes("一系列");
string str = Convert.ToBase64String(bytes);
textBox1.Text = "一系列";
textBox2.Text = str;
//textBox3.Text = System.Text.Encoding.Default.GetString(bytes);
string binary1="";
for (int i = 0; i < bytes.Length; i++)
{
binary1 = binary1 + Convert.ToString(bytes[i], 2) + Environment.NewLine;
}
textBox3.Text = binary1;
byte[] bytes2 = Encoding.Default.GetBytes(str);
string binary2 = "";
for (int i = 0; i < bytes2.Length; i++)
{
binary2 = binary2 + Convert.ToString(bytes2[i], 2) + Environment.NewLine;
}
textBox4.Text = binary2;
}
运行情况如下图;左边两个文本框是三个汉字和它的Base64编码;右边是它们对应的字节;
三个汉字是6字节;编码后变为8字节;下图编码后的字节的有的行看上去少了些bit,这是显示的原因,前面0省略了;
也可以实现对图片的base64编码;
private string base64string = "";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
System.IO.MemoryStream m = new System.IO.MemoryStream();
System.Drawing.Bitmap bp = new System.Drawing.Bitmap(@"y:\\gif1.gif");
bp.Save(m, System.Drawing.Imaging.ImageFormat.Gif);
byte[]b= m.GetBuffer();
base64string=Convert.ToBase64String(b);
textBox1.Text = base64string;
}
private void button2_Click(object sender, EventArgs e)
{
byte[] bt = Convert.FromBase64String(base64string);
System.IO.MemoryStream stream = new System.IO.MemoryStream(bt);
Bitmap bitmap = new Bitmap(stream);
pictureBox2.Image = bitmap;
}
运行如下;点第一个按钮把图片编码为base64;点第二个按钮再从base64码获得原图像;
以上是关于Base64的编码规则和C#实现的主要内容,如果未能解决你的问题,请参考以下文章