Запись несколько переменных в ByteArray

141
26 декабря 2019, 22:20

записываю число в байтовый массив и далее массив отправляю в сокет клиенту.

uint a = 1;
byte[] b = BitConverter.GetBytes(a);
handler.Send(b);

Но как записывать несколько переменных в массив байтов, например строку, uint, int и прочие?

Answer 1

Предложу ещё один способ:

uint a = 1;
int b = 2;
using (var stream = new MemoryStream())
using (var writer = new BinaryWriter(stream))
{
    writer.Write(a);
    writer.Write(b);
    var bytes = stream.ToArray();
    handler.Send(bytes);
}

У BinaryWriter метод Write имеет множество перегрузок.

PS: Читать из байтового массива можно по аналогии с помощью BinaryReader.

Answer 2
uint a = 1;
byte[] a1 = BitConverter.GetBytes(a);
double b = 1.234;
byte[] a2 = BitConverter.GetBytes(b);
byte[] arr = new byte[a1.Length + a2.Length];
Array.Copy(a1, 0, arr, 0, a1.Length);
Array.Copy(a2, 0, arr, a1.Length, a2.Length);
handler.Send(arr);
READ ALSO
Как загрузить картинку в RichTextBox, также как это делает программа?

Как загрузить картинку в RichTextBox, также как это делает программа?

Постараюсь максимально ёмко уместить свой вопросПока писал этот вопрос понял, что можно было написать короче

140
Получение значений из сокета

Получение значений из сокета

Клиент записывает в сокет последовательно значения Uint, Uint, Short

136
Проверка процессов критический или нет

Проверка процессов критический или нет

Какой самый надёжный метод определения системных процессов в системе?

122
Как назначить StreamSource в BitmapImage в codebehind?

Как назначить StreamSource в BitmapImage в codebehind?

Есть zip файл, в котором хранится FlowDocument (Cardxaml) и папка с изображениями (Media)

117