【问题标题】:byte[] buffer or ref/pointer? in C#byte[] 缓冲区还是引用/指针?在 C# 中
【发布时间】:2009-07-08 03:48:41
【问题描述】:

我有一个原始缓冲区,我需要制作另外 3 个缓冲区,头部始终是前 8 个字节,主体始终是从字节 8 到 ?那么脚是从哪来的?到文件末尾。

我如何从已经存在的缓冲区中创建一个缓冲区,以便我可以填充身体和脚部。还有我如何创建头来使用前 16 个字节。我假设我没有使用 ref 或指针。

【问题讨论】:

标签: c# binary bytearray


【解决方案1】:

您可以使用 Array.Copy() 将元素从一个数组复制到另一个数组。您可以指定源和目标的开始和结束位置。

您可能还想查看Buffer.BlockCopy()

【讨论】:

    【解决方案2】:

    您可以使用 MemoryStream 中的 BinaryReader

     System.IO.MemoryStream stm = new System.IO.MemoryStream( buf, 0, buf.Length );
     System.IO.BinaryReader rdr = new System.IO.BinaryReader( stm );
    
     int bodyLen = xxx;
     byte[] head = rdr.ReadBytes(8)
     byte[] body = rdr.ReadBytes(bodyLen );
     byte[] foot = rdr.ReadBytes(buf.Length-bodylen-8);
    

    【讨论】:

      【解决方案3】:

      尝试使用Buffer.BlockCopy,与数组操作相比,它应该为基本类型提供更快的性能。 (为什么?我不知道但MSDN said so

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-31
        • 2021-01-11
        • 2016-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多