博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#Base64编码
阅读量:6759 次
发布时间:2019-06-26

本文共 1408 字,大约阅读时间需要 4 分钟。

一. Base64的编码规则

Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。

例:将对ABC进行BASE64编码:

1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);
2、再取二进制值A(01000001)B(01000010)C(01000011);
 3、然后把这三个字节的二进制码接起来(010000010100001001000011);
4、 再以6位为单位分成4个数据块,并在最高位填充两个0后形成4个字节的编码后的值,(00010000)(00010100)(00001001)(00000011),其中蓝色部分为真实数据;
 5、再把这四个字节数据转化成10进制数得(16)(20)(9)(3);
 6、最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D),这里的值实际就是数据在字符表中的索引。

注:BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

二.解码规则

解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。

三. C#中的实现

 编码

byte
[] bytes 
=
 Encoding.Default.GetBytes(
"要转换的字符
"
);
string
 str 
=
 Convert.ToBase64String(bytes);

解码:

byte
[] outputb 
=
 Convert.FromBase64String(str);
string
 orgStr 
=
 Encoding.Default.GetString(outputb);

C#图片的Base64编码和解码 

图片的Base64编码:

System.IO.MemoryStream m 
=
 
new
 System.IO.MemoryStream();
System.Drawing.Bitmap bp 
=
 
new
 System.Drawing.Bitmap(@“c:\demo.GIF”);
bp.Save(m, System.Drawing.Imaging.ImageFormat.Gif);
byte
[]b
=
 m.GetBuffer();
string
 base64string
=
Convert.ToBase64String(b);

Base64字符串解码:

byte
[] bt 
=
 Convert.FromBase64String(base64string);
System.IO.MemoryStream stream 
=
 
new
 System.IO.MemoryStream(bt);
Bitmap bitmap 
=
 
new
 Bitmap(stream);
pictureBox1.Image 
=
 bitmap;

 

 
 
 

转载地址:http://xhfeo.baihongyu.com/

你可能感兴趣的文章
构建之法课后作业第一次作业(15个题选一个)
查看>>
操作redis方法
查看>>
C语言函数
查看>>
Python3-异常处理
查看>>
Python-简单打印进度条
查看>>
【02】天气查询应用(第二课)
查看>>
监听微信返回按钮
查看>>
第二次实验报告
查看>>
HDU ACM 3790 最短路径问题
查看>>
python生成器
查看>>
linux 安装 ftp
查看>>
python 监控FTP目录下的文件个数
查看>>
MapInfo格式转arggis格式
查看>>
Network - SSL/TLS的基本概念
查看>>
python学习之老男孩python全栈第九期_day012知识点总结
查看>>
Shell if else
查看>>
iOS之 block,代替代理作为回调函数
查看>>
Linux信号(signal) 机制分析
查看>>
SublimeText3按ctrl+b执行python无反应
查看>>
linux之各个文件夹作用
查看>>