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#实现相关推荐
- 浅谈Base64编码规则
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位 ...
- 计算机编码规则之:Base64编码
文章目录 简介 Base64和它的编码原理 Base64的变体 Base64的编码细节 总结 简介 我们知道计算机中的文件可以分为两种,一种是人肉眼可读的文本类文件,一种是肉眼不可读的二进制文件.一般 ...
- 【转】BASE64编码规则
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式.(将字符串转换为二进制,从前往后,每6位一取,作为新的字节) ...
- 我的Java开发学习之旅------gt;Base64的编码思想以及Java实现
Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...
- 我的Java开发学习之旅------Base64的编码思想以及Java实现
Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...
- ASCII+Unicode+UTF8(字符编码方式-字节) Base64(字节编码方式-64字符)
Base64 编码是一种可以把二进制文件编码成文本的编码规则.在很多地方地方都有用到,比如我们可以把图像转成 Base64 编码,然后内联到 HTML 或者 CSS 中. Base64 编码用一些很常 ...
- 彻底弄懂base64的编码与解码原理
作者介绍 背景 base64的编码原理网上讲解较多,但解码原理讲解较少,并且没有对其中的内部实现原理进行剖析.想要彻底了解base64的编码与解码原理,请耐心看完此文,你一定会有所收获. 涉及算法与逻 ...
- Base64变种实现,如何实现Base64自定义编码
某些情况下,标准的Base64编码可能无法满足特殊的业务需求,此时我们往往希望通过最简单的方式实现Base64的变种以满足需求.所谓变种是指借鉴了Base64的思想,但是自定义了字符表.下文基于jav ...
- 深入理解Base64字符串编码知识
在我们进行前端开发时,针对项目优化,常会提到一条:针对较小图片,合理使用Base64字符串替换内嵌,可以减少页面http请求. 并且还会特别强调下,必须是小图片,大小不要超过多少KB,等等. 那么,B ...
最新文章
- python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
- 人均月薪 7.5 万,腾讯 Q2 成绩单来了,网友酸了?
- 命令行批量截图Node脚本
- HTML5 Canvas Text实例1
- python绘制相关性矩阵_python seaborn heatmap可视化相关性矩阵实例
- GYM 101669F - Binary Transformations
- android 足球游戏,足球游戏哪个好玩,安卓单机足球游戏哪个好玩
- 台式机没有显示计算机图标,为什么台式电脑没有喇叭图标
- python3 常见命令
- Druid连接池jar包的下载 配置和简单使用
- FISCO BCOS 区块链 学习开发步骤
- 趋势预测算法大PK!
- 保持简单:纪念丹尼斯·里奇
- mmorpg服务器物理,伸缩性MMORPG服务器架构的设计与实现
- Git之深入解析reset命令原理以及与checkout命令的区别
- 三步解决Chrome80后提示限制第三方cookie问题
- 在猎豹浏览器中使用360邮件通
- 列表推导式详解:[i for i in L]
- IDEA创建maven项目没有srcmainjava目录问题解决
- google地图找不到GoogleMaps/GoogleMaps.h的问题