将不同类型的多个变量组合成单个字节数组的最有效方法是什么?
采用以下示例数据:
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发送这些数据。
我有没有想到的任何方法?
答案 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合同。