BitConverter.GetBytes(一些参数)

时间:2014-12-21 21:23:11

标签: c# tcp

我想发送一个包含一些参数的字节数组。 但是函数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);

1 个答案:

答案 0 :(得分:0)

辅助函数会缩短它:

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);