zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    一般查找 (顺序查找)
    sscanf
    uva-11044-水题
    uva-10785-模拟水题
    uva-10596-欧拉回路
    uva-10879-因数分解
    uva-10562-二叉树
    扯皮的cplex-感觉时间不对
    cplex-Java-样例代码解析
    cplexJava源码---计算结果
  • 原文地址:https://www.cnblogs.com/zcwfb/p/14952559.html
Copyright © 2011-2022 走看看