byte[] 和 base64 的相互转换

1.定义

  百度百科:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,

       需要解码后才能阅读。

  专业定义:①.Base64是一种用64个字符来表示任意二进制数据的方法;②.Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。

2.用法

     (1)string --->  byte[]

    string  str="中国?123?";

               byte[] buffer=Convert.FromBase64String(str);

                byte[] buffer=System.Text.Encoding.Default.GetBytes(str); //默认编码方式,

                 byte[] buffer=System.Text.Encoding.UTF8.GetBytes(str);

          =System.Text.Encoding.Unicodes.GetBytes(str);

          =System.Text.Encoding.GetEncoding("gb2312").GetBytes(str); // 指定编码方式 gb2312, 汉字占两个字节,英文字母占一个字节,所以byte数组长度是12

                 string s= System.Text.Encoding.Default.GetString(new byte(){new byte[]{ buffer[0], buffer[1]}});   //解码以后是   “中”

     (2)byte[]    ---->  string

               string s= System.Text.Encoding.Default.GetString(buffer);

               string s=Convert.ToBase64String(buffer);

      (3)string    --->  MemoryStream

               MemoryStream ms= new MemoryStream(System.Text.Encoding.Default.GetBytes(str));

               MemoryStream ms=new MemoryStream(Convert.From64BaseString(str));

  (4)MemoryStream  ---> string

                string  s=Convert.ToBase64String(ms.ToArray());

      string s=System.Text.Encoding.GetString(ms.ToArray());

  (5)byte[]  ---->base64转换实例

//在C#中
//图片到byte[]再到base64string的转换:
Bitmap bmp = new Bitmap(filepath);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
string pic = Convert.ToBase64String(arr);

//base64string到byte[]再到图片的转换:
byte[] imageBytes = Convert.FromBase64String(pic);
//读入MemoryStream对象
MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
memoryStream.Write(imageBytes, 0, imageBytes.Length);
//转成图片
Image image = Image.FromStream(memoryStream);

//现在的数据库开发中:图片的存放方式一般有CLOB:存放base64string BLOB:存放byte[]
// 一般推荐使用byte[]。因为图片可以直接转换为byte[]存放到数据库中若使用base64string 还需要从byte[]转换成base64string 。更浪费性能。

  

                参考源:https://www.cnblogs.com/xskblog/p/6179689.html

  

原文地址:https://www.cnblogs.com/zcwfb/p/14952559.html