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);
  • 相关阅读:
    测试用例练习2
    测试小尝试
    两个栈实现队列 Python实现
    treap Python实现
    AVL树Python实现(使用递推实现添加与删除)
    AVL树Python实现
    跳表(skiplist)Python实现
    红黑树Python实现
    Django Middleware 之 SessionMiddleware
    软件测试——Peer Review(简介)
  • 原文地址:https://www.cnblogs.com/jordan2009/p/2728864.html
Copyright © 2011-2022 走看看