首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BitConverter.GetBytes(一些参数)

BitConverter.GetBytes(一些参数)
EN

Stack Overflow用户
提问于 2014-12-22 05:23:11
回答 1查看 200关注 0票数 0

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

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2014-12-22 06:20:14

一个helper函数会让它变得更短:

代码语言:javascript
复制
public void SendBytes(MemoryStream ms, byte[] bytes)
{
    ms.Write(bytes, 0, bytes.Length);
}

那么你的代码片段就变成了

代码语言:javascript
复制
// 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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27593973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档