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

时间:2018-06-16 20:31:34

标签: c# .net

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

采用以下示例数据:

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

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

想象它(Pseudocode):

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

我想到了不同的方法,包括不安全的代码,使用byte[]并使用Linq的Concat将它们转换为BitConverter

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

我有没有想到的任何方法?

1 个答案:

答案 0 :(得分:4)

将BinaryWriter与MemoryStream结合使用。

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合同。