Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
MS24
11 / 11 / 2
Регистрация: 22.02.2012
Сообщений: 115
Завершенные тесты: 1
1

Struct to byte array

09.07.2015, 17:27. Просмотров 1567. Ответов 2
Метки нет (Все метки)

Есть вот такая вот структура

C#
1
2
3
4
5
6
  private struct ipcam_command_t
        {
             public short cmd;
             public short flags;
             public int[] param;
         }
Мне нужно передать ее через сокет, но я не знаю как сконвертировать ее в массив байтов.

Решил сконвертить ее ручками, применяя BitConverter.GetBytes();
Но не могу понять как в один и тот же массив записывать значения не затирая предыдущие.

Добавлено через 6 минут
Т.е если я напишу:
C#
1
2
byte[] tmp = BitConverter.GetBytes(MyStr.cmd); // Все хорошо
byte[] tmp = BitConverter.GetBytes(MyStr.flags); // Затирает предыдущие значения
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2015, 17:27
Ответы с готовыми решениями:

Byte array to struct
Имеется структура например public struct Sphere { public...

Конвертирование HEX array в BYTE array
Собственно сабж. Накопипастил. И слепил это. Скажите а можно лаконичнее? ...

Byte array to string
Добрый день! Имеется девайс: U-Prox-Keypad Задача: считать с клавиатуры...

AES128 c Byte array
Добрый день ! Нужна реализация AES 128 с массивом байт , а не со строкой . ...

Конвертация из string в byte array
Добрых времени суток. Задача такова, спарсить текст и перевести его в массив...

2
XRoy
862 / 712 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
09.07.2015, 17:53 2
MS24,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        private static byte[] StructToBytes(ipcam_command_t myStruct)
        {
            int size = Marshal.SizeOf(myStruct);
            byte[] arr = new byte[size];
 
            IntPtr buffer = Marshal.AllocHGlobal(size);
            Marshal.StructureToPtr(myStruct, buffer, false);
            Marshal.Copy(buffer, arr, 0, size);
            Marshal.FreeHGlobal(buffer);
 
            return arr;
        }
 
 
        private static ipcam_command_t BytesToStruct(byte[] arr)
        {
            int size = Marshal.SizeOf(typeof (ipcam_command_t));
 
            IntPtr buffer = Marshal.AllocHGlobal(size);
            Marshal.Copy(arr, 0, buffer, size);
            var myStruct = (ipcam_command_t) Marshal.PtrToStructure(buffer, typeof (ipcam_command_t));
            Marshal.FreeHGlobal(buffer);
 
            return myStruct;
        }
0
tnk500
114 / 118 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
Завершенные тесты: 3
09.07.2015, 18:00 3
MS24, первая ссылка в гугле:
C#
1
2
3
4
5
6
7
8
9
10
11
using System.Runtime.InteropServices;
    byte[] getBytes(CIFSPacket str) {
    int size = Marshal.SizeOf(str);
    byte[] arr = new byte[size];
 
    IntPtr ptr = Marshal.AllocHGlobal(size);
    Marshal.StructureToPtr(str, ptr, true);
    Marshal.Copy(ptr, arr, 0, size);
    Marshal.FreeHGlobal(ptr);
    return arr;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2015, 18:00

byte array занести строку
Добрый день всем. Нутром чую что это сделать легко, но не пойму как правельно....

Вывести данные из List (в листе структура Struct (в структуре данные формата int, short, byte) в textBox
Не выводятся данные

unsafe byte array to struct array
Есть массив байт размером N. Есть структура, внутри которой enum поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru