Member 13711215 Ответов: 2

Формат слияния двух байтов


Как я могу объединить формат байтов

string s = textBox1.Text;
            byte[] bytes = Encoding.ASCII.GetBytes(s);            

            //byte[] bytesToSend = new byte[16] { 0x01, 0x46, 0x42, 0x44, 0x2d, 0x2d, 0x2d, 0x53, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x17};
            byte[] bytesToSend = new byte[7] { 0x01, 0x46, 0x4d, 0x42, 0x2d, 0x2d, 0x2d };
            byte b3 = (byte)(bytesToSend & bytes);

            clientSocket.Send(b3);


спасибо

Что я уже пробовал:

Я пытаюсь использовать операторы & и+, но все равно ошибка CS0019 оператор '&' не может быть применен к операндам типа 'byte[]' и 'byte[]'

2 Ответов

Рейтинг:
1

OriginalGriff

Нельзя и целые массивы: а есть оператор, который работает над отдельными элементами массива, так как это "+". Если вы хотите объединить два массива так, чтобы получить один больший массив со всеми элементами одного, а затем со всеми элементами другого, то сделайте это:

byte[] a1 = new byte[16] { 0x01, 0x46, 0x42, 0x44, 0x2d, 0x2d, 0x2d, 0x53, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x17};
byte[] a2 = new byte[7] { 0x01, 0x46, 0x4d, 0x42, 0x2d, 0x2d, 0x2d };
byte[] combined = a1.Concat(a2).ToArray();


Member 13711215

Извините, я пытаюсь объединить byte[] bytes = Encoding.ASCII.GetBytes(s);

и

byte[] bytesToSend = новый байт[7] { 0x01, 0x46, 0x4d, 0x42, 0x2d, 0x2d, 0x2d };

OriginalGriff

Затем вам нужно точно указать, что вы ожидаете получить в результате.
Если у вас есть два массива
byte[] a1 = новый байт[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09};
byte[] a2 = новый байт[] { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70};
Тогда что именно вы ожидаете от "слияния" и почему? Существует огромное количество возможностей!

Member 13711215

В textbox1 находится text =00990202. Я хочу объединить байтовую строку "bytesToSend" с текстом textbox1 в одну строку и отправить эту строку через clientsocket. Bytetosend + textbox1 и отправьте эту полную строку.

OriginalGriff

Это мне ни о чем не говорит.
Я понятия не имею, откуда должна взяться строка "00990202" и как вам нужно "слить" с ней байты.

Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы. Так что перестаньте пытаться печатать как можно меньше, или мы будем здесь весь день! :смеяться:

Рейтинг:
1

Member 13711215

Мое решение

string s = textBox1.Text;
            var bytes = Encoding.ASCII.GetBytes(s);            

            //načtení souboru
            byte[] bytesToSend = new byte[8] { 0x01, 0x46, 0x4d, 0x42, 0x2d, 0x2d, 0x2d, 0x52 };
            byte[] bytesToSend2 = new byte[1] {0x17};           

            var load = bytesToSend.Concat(bytes).ToArray();
            var load2 = load.Concat(bytesToSend2).ToArray();
            clientSocket.Send(load2);        

            //print souboru
            System.Threading.Thread.Sleep(1000);
            byte[] print = new byte[16] { 0x01, 0x46, 0x42, 0x44, 0x2d, 0x2d, 0x2d, 0x53, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x17 };
            clientSocket.Send(print);

            clientSocket.Close();