Создание структуры из массива байт

230
28 декабря 2017, 21:49

В исходном коде, который зашит в устройство есть такая структура:

__packed struct {
uint32_t    Sec : 6 ;
uint32_t    Min : 6 ;
uint32_t    Hour : 5 ;
uint32_t    Date : 5 ;
uint32_t    Month : 4 ;
uint8_t     Year : 7 ;
uint8_t     TimeInvalid : 1 ;
} Time ;

Данная структура помещается в массив из 5 байт. Как обработать эту структуру на C#? Проблема в том, что поля структуры не разделены по отдельным байтам. Есть ли возможность создать структуры с полями, у которых указан размер в битах? И как создать структуру из массива байтов?

Answer 1

C# нативно не поддерживает битовые поля. Придется делать структуру(или массив) из пяти байт. И работать с ними в ручную. Либо использовать разные хаки

Вот как можно описать структуру:

[StructLayout(LayoutKind.Sequential, Pack=0)]
struct ExampleStruct
{
   public byte b1;
   public byte b2;
   public byte b3;
   public byte b4;
   public byte b5;   
}
READ ALSO
Странный баг с мусорными строками в Unity

Странный баг с мусорными строками в Unity

Появился ооочень странный наполовину плавающий баг с мусорными строками

248
Передача функции из одной формы в другую (C#)

Передача функции из одной формы в другую (C#)

Столкнулся с данной проблемой при передачи функции из одной формы в другуюКак её решить?

205
Fluent-Ribbon: Отсутствуют картинки на контроллах в режиме конструктора

Fluent-Ribbon: Отсутствуют картинки на контроллах в режиме конструктора

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

190
C# Как запустить процесс в процессе?

C# Как запустить процесс в процессе?

Можно ли как-то в c# запустить процесс в процессе без создания нового процесса?

186