代码之家  ›  专栏  ›  技术社区  ›  Max Play

将多个类型组合成一个字节数组

  •  1
  • Max Play  · 技术社区  · 7 年前

    将不同类型的多个变量组合到一个单字节数组中最有效的方法是什么?

    以以下数据为例:

    short a = 500;
    byte b = 10;
    byte[] c = new byte[4];
    

    如何将这三个变量组合成一个字节数组而不浪费大量时间和内存?

    这样想(伪代码):

    var combinedArray = new byte[] { a, b, c };
    

    我想到了不同的方法,包括不安全的代码,把它们转换成 byte[] 使用 BitConverter 使用林肯的concat。

    最后我需要一个数组,而不仅仅是一个 IEnumerable ,因为我需要通过udp发送此数据。

    有没有什么方法我没想到?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Henk Holterman    7 年前

    将二进制写入程序与内存流结合使用。

    var buffer = new MemoryStream();   
    var writer = new BinaryWriter(buffer);
    
    writer.Write(a);
    writer.Write(b);
    writer.Write(c);
    
    writer.Close();    
    byte[] bytes = buffer.ToArray();
    

    但请注意,没有填充或对齐。数组 c 将从奇数偏移开始。

    您还必须验证与客户签订的big-endian/little-endian合同。

    推荐文章