• C# string和MemoryStream及byte[]之间相互转换


    C# string和MemoryStream及byte[]之间相互转换

    定义string变量为str,内存流变量为ms,比特数组为bt

    1.字符串转比特数组

    复制代码 代码如下:

    (1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串");
    (2)byte[] bt=Convert.FromBase64String("字符串");

    2.字符串转流

    复制代码 代码如下:

    (1)MemoryStream ms=new MemoryStream(System.Text.Encoding.Default.GetBytes("字符串"));
    (2)MemoryStream ms=new MemoryStream(Convert.FromBase64String("字符串"));

    3.流转比特数组

    复制代码 代码如下:

    (1)byte[] bt=ms.ToArray();
    (2)MemoryStream ms=new MemoryStream();ms.Write(bt,0,ms.Length);

    4.流转字符串

    复制代码 代码如下:

    (1)string str=Convert.ToBase64String(ms.ToArray());
    (2)string str=System.Text.Encoding.Default.GetString(ms.ToArray());

    5.比特数组转字符串

    复制代码 代码如下:

    (1)string str=System.Text.Encoding.Default.GetString(bt);
    (2)string str=Convert.ToBase64String(bt);

    6.比特数组转流

    复制代码 代码如下:

    (1)MemoryStream ms=new MemoryStream(bt);
    (2)MemoryStream ms=new MemoryStream();ms.Read(bt,0,bt.Length);

    总结:可以看出byte[]在字符串string和流MemoryStream之间转换起到过渡的作用,string和MemoryStream转换都要先转换成byte[]。

    以下是将文件转为byte[]

    /// 
    /// 将文件转换成byte[] 数组
    /// 
    /// 文件路径文件名称
    /// byte[]
    protected byte[] GetFileData(string fileUrl)
    {
      FileStream fs = new FileStream(fileUrl, FileMode.Open, FileAccess.Read);
      try
      {
        byte[] buffur = new byte[fs.Length];
        fs.Read(buffur, 0, (int)fs.Length);
    
        return buffur;
      }
      catch (Exception ex)
      {
        //MessageBoxHelper.ShowPrompt(ex.Message);
        return null;
      }
      finally
      {
        if (fs != null)
        {
    
          //关闭资源
          fs.Close();
        }
      }
    }
    
    
    /// 
    /// 将文件转换成byte[] 数组
    /// 
    /// 文件路径文件名称
    /// byte[]
    
    protected byte[] AuthGetFileData(string fileUrl)
    {
      using (FileStream fs = new FileStream(fileUrl, FileMode.OpenOrCreate, FileAccess.ReadWrite))
      {
        byte[] buffur = new byte[fs.Length];
        using (BinaryWriter bw = new BinaryWriter(fs))
        {
          bw.Write(buffur);
          bw.Close();
        }
        return buffur;
      }
    }
  • 相关阅读:
    数据结构和算法八股与手撕
    基数排序!
    【UiPath2022+C#】UiPath 练习-Excel和数据表
    2022-07-05 数据结构与算法-散列表、哈希算法
    可视化 | (三)Edward Tufted基本设计准则
    杭电oj 2046 骨牌铺方格 C语言
    arthas 使用教程
    Linux学习-63-源码包服务管理方法
    【PY】倒计时日历
    一文读懂什么是 OCR 识别
  • 原文地址:https://blog.csdn.net/qq_18932003/article/details/125712045