Как упаковать переменые разных типов в один byte[]
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.02 19:00
Оценка: 62 (3)
#Имя: FAQ.dotnet.pack2byte[]
Здравствуйте Vyacheslav_M, Вы писали:

VM>Привет всем!


VM>Есть следующая задача:


VM>есть переменная

VM>int var;

VM>структура

VM>private struct s
VM>{
VM> public bool Move;
VM> public int xPos;
VM> public int yPos;
VM>}
VM>s tmp;

VM>и массив байтов

VM>byte[]=new byte[n];

VM>дак вот, надо эту переменную, структуру и массив байтов запихать в другой массив байтов

VM>что бы отправить в socket а на клиентской стороне все это вытащить из того же массива байтов.
VM>Как все это организовать без указателей?

Ну для int и byte[] все просто
MemoryStream ms = new MemoryStream();
BinaryWriter bw = new BinaryWriter(ms);
br.Write(var);
br.Write(bytearr);
socket.Send(ms.Buffer);


Для классов и структур все немножко посложнее
//Твою структурку надо пометить как сериализуемую
[Serializable]
private struct s {
 public bool Move;
 public int xPos;
 public int yPos;
}

...

//Ну а далее выбираешь сериализатор и вперед

MemoryStream ms = new MemoryStream();
BinaryWriter bw = new BinaryWriter(ms);

IFormatter formatter = new BinaryFormatter();

br.Write(var);
formatter.Serialize(ms,s);
br.Write(bytearr);
socket.Send(ms.Buffer);
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.