我目前有这个字节数组:
public byte[] ToByteArray()
{
List<byte> byteList = new List<byte>();
byteList.AddRange(BitConverter.GetBytes(MsgID));
byteList.AddRange(BitConverter.GetBytes(Status));
byteList.AddRange(BitConverter.GetBytes(Value));
byteList.AddRange(BitConverter.GetBytes(TagName.Length));
byteList.AddRange(Encoding.ASCII.GetBytes(TagName));
return byteList.ToArray();
}
我使用此数组通过TCP发送,因此我需要每个元素保持一个设置位置。这对我来说很好,直到我将value
更改为动态变量,该变量可以是int16
或int32
。数据类型在msgID
中指定,因此客户端知道如何处理接收的字节消息。但是,由于转换后的int16
是int32
的字节长度的一半,我需要value
和TagName.Length
之间的某种占位符。
我正考虑在索引7处使用InsertRange
,但我不确定该列表将如何处理丢失的2个字节。