BitConverter.GetBytes(一些参数)

本文关键字:参数 GetBytes BitConverter | 更新日期: 2023-09-27 18:34:49

我想发送一个包含一些参数的字节数组。但该函数BitConverter.GetBytes()只得到一个参数。所以我做了一些事情,但它看起来并不那么聪明。如果有人知道如何我能做得更好,所以我很乐意学习如何。我的代码 :

IDMessage = 4; // Length ID Message
byte[] byteToSendLocation = new byte[20];
byteToSendLocation = BitConverter.GetBytes(IDMessage);
IDObserver =2;
byte[] byteToSendIDObserver = new byte[20];
byteToSendIDObserver = BitConverter.GetBytes(IDObserver);
Lenght = double.Parse(LenghtTXT.Text);
Lenght = Lenght * Math.Pow(10, 5);
byte[] byteToSendLenght = new byte[20];
byteToSendLenght = BitConverter.GetBytes(Lenght);
byte[] byteToSend = new byte[100];
Array.Copy(byteToSendLocation, 0, byteToSend, 0, byteToSendLocation.Length);
Array.Copy(byteToSendIDObserver, 0, byteToSend, 20, byteToSendIDObserver.Length);
Array.Copy(byteToSendLenght, 0, byteToSend, 60, byteToSendLenght.Length);
//Send Location Message
client.GetStream().Write(byteToSend, 0, byteToSend.Length);

BitConverter.GetBytes(一些参数)

一个辅助函数会让它更短:

public void SendBytes(MemoryStream ms, byte[] bytes)
{
    ms.Write(bytes, 0, bytes.Length);
}

然后您的代码段变为

// var client = new TcpClient();
var ms = new MemoryStream();
int IDMessage = 4; // Length ID Message
SendBytes(ms, BitConverter.GetBytes(IDMessage));
int IDObserver = 2;
SendBytes(ms, BitConverter.GetBytes(IDObserver));
Lenght = double.Parse(LenghtTXT.Text)
Lenght = Lenght * Math.Pow(10, 5);
SendBytes(ms, BitConverter.GetBytes(Lenght));
byte[] allBytes = ms.ToBytes();
client.GetStream().SendBytes(allBytes, 0, allBytes.Length);