zoukankan      html  css  js  c++  java
  • Stream 和 Byte[] 互操作

    在 .Net 的 IO 操作中经常会用到 Stream 和 Byte[],有两种形式:

    一、Stream -> Byte[]:

    1. 如果 Stream 的 Length 属性可读,非常的简单,代码如下:

    private byte[] GetBytes(Stream stream)
    {
        if (stream.CanSeek)
        {
            Byte[] buffer = new byte[stream.Length];
            stream.Write(buffer, 0, buffer.Length);
            return buffer;
        }
        //用下面的方法
        return null;
    }

    2. 如果 Stream 的 Length 属性不可读,代码如下:

    private byte[] GetBytes(Stream stream)
    {
        using (MemoryStream mstream = new MemoryStream())
        {
            byte[] bytes = new byte[1024]; //此处不易设置太大或太小的值,且应该为2的次方
            if (stream.CanRead)
            {
                while (true)
                {
                    int length = stream.Read(bytes, 0, bytes.Length);
                    if (length <= 0)
                    {
                        break;
                    }
                    mstream.Write(bytes, 0, length);
                }
            }
            return mstream.ToArray();
        }
    }

    二、bytes -> Stream:

    直接使用内存流即可 , 代码如下:

    MemoryStream ms=new MemoryStream(bytes)

     字符串(string)与 byte(byte[]) 之间的转换。

    byte[] buffer = System.Text.Encoding.Default.GetBytes("字符串");
    string str = System.Text.Encoding.Default.GetString(buffer);
  • 相关阅读:
    Oracle OCP提纲
    Oracle redo 日志损坏的几种情况下的恢复
    Oracle 归档开启切换和归档日志删除(单实例和RAC)
    MySQL mysqldump备份与恢复
    Oracle 卸载
    MySQL脚本自动安装mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
    Oracle session出现大量的inactive
    Oracle 备份与恢复基础
    NuGet 下载dll
    Azure Service Bus
  • 原文地址:https://www.cnblogs.com/jordan2009/p/2728864.html
Copyright © 2011-2022 走看看