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#实现相关推荐

  1. 浅谈Base64编码规则

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位 ...

  2. 计算机编码规则之:Base64编码

    文章目录 简介 Base64和它的编码原理 Base64的变体 Base64的编码细节 总结 简介 我们知道计算机中的文件可以分为两种,一种是人肉眼可读的文本类文件,一种是肉眼不可读的二进制文件.一般 ...

  3. 【转】BASE64编码规则

    Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式.(将字符串转换为二进制,从前往后,每6位一取,作为新的字节)  ...

  4. 我的Java开发学习之旅------gt;Base64的编码思想以及Java实现

    Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...

  5. 我的Java开发学习之旅------Base64的编码思想以及Java实现

    Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...

  6. ASCII+Unicode+UTF8(字符编码方式-字节) Base64(字节编码方式-64字符)

    Base64 编码是一种可以把二进制文件编码成文本的编码规则.在很多地方地方都有用到,比如我们可以把图像转成 Base64 编码,然后内联到 HTML 或者 CSS 中. Base64 编码用一些很常 ...

  7. 彻底弄懂base64的编码与解码原理

    作者介绍 背景 base64的编码原理网上讲解较多,但解码原理讲解较少,并且没有对其中的内部实现原理进行剖析.想要彻底了解base64的编码与解码原理,请耐心看完此文,你一定会有所收获. 涉及算法与逻 ...

  8. Base64变种实现,如何实现Base64自定义编码

    某些情况下,标准的Base64编码可能无法满足特殊的业务需求,此时我们往往希望通过最简单的方式实现Base64的变种以满足需求.所谓变种是指借鉴了Base64的思想,但是自定义了字符表.下文基于jav ...

  9. 深入理解Base64字符串编码知识

    在我们进行前端开发时,针对项目优化,常会提到一条:针对较小图片,合理使用Base64字符串替换内嵌,可以减少页面http请求. 并且还会特别强调下,必须是小图片,大小不要超过多少KB,等等. 那么,B ...

最新文章

  1. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
  2. 人均月薪 7.5 万,腾讯 Q2 成绩单来了,网友酸了?
  3. 命令行批量截图Node脚本
  4. HTML5 Canvas Text实例1
  5. python绘制相关性矩阵_python seaborn heatmap可视化相关性矩阵实例
  6. GYM 101669F - Binary Transformations
  7. android 足球游戏,足球游戏哪个好玩,安卓单机足球游戏哪个好玩
  8. 台式机没有显示计算机图标,为什么台式电脑没有喇叭图标
  9. python3 常见命令
  10. Druid连接池jar包的下载 配置和简单使用
  11. FISCO BCOS 区块链 学习开发步骤
  12. 趋势预测算法大PK!
  13. 保持简单:纪念丹尼斯·里奇
  14. mmorpg服务器物理,伸缩性MMORPG服务器架构的设计与实现
  15. Git之深入解析reset命令原理以及与checkout命令的区别
  16. 三步解决Chrome80后提示限制第三方cookie问题
  17. 在猎豹浏览器中使用360邮件通
  18. 列表推导式详解:[i for i in L]
  19. IDEA创建maven项目没有srcmainjava目录问题解决
  20. google地图找不到GoogleMaps/GoogleMaps.h的问题

热门文章

  1. Ubuntu网络配置方法
  2. Leetcode 219. 存在重复元素 II 解题思路及C++实现
  3. Android内容提供程序
  4. LeetCode刷题中遇到的一些知识点
  5. CentOS下TPC-W安装
  6. oracle获取父级,如何通过sql获取oracle connect中的最终父id列
  7. Vue指令之v-model和双向数据绑定
  8. 基于vue2实现省市联动
  9. 平方剩余(二次剩余)
  10. spaugment--生成最小二乘增广矩阵