Отменить "выравнивание" элементов структур в памяти - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

В прилагаемом примере объявлена объединённая структура, которая может читаться и как массив байт и как подструктура элементов базовых типов. Если размер каждого элемента подструктуры одинаков (например по 4 байта) всё работает правильно, несмотря на то что в структуру включены различные 4-х байтовые базовые типы данных. Если размер 1-го элемента подструктуры меньше остальных (например 1 байт против остальных 4-х байтовых) то элемент подструктуры считываемый следом за 1-м будет читаться не со 2-го байта, компилятор зачем то отступает на 3 байта и, естественно, читает мусор. В С и DELPHI это кажется называлось выравниванием элементов структур. Как этого избежать?

Решение задачи: «Отменить "выравнивание" элементов структур в памяти»

textual
Листинг программы
    <StructLayout(LayoutKind.Sequential, Pack:=1)> _
    Structure StrData33  '1 + 4x8 = 33 байт
        Public t1 As Byte
        Public v0 As Single
        Public v1 As Single
        Public v2 As Single
        Public v3 As Single
        Public v4 As Single
        Public v5 As Single
        Public v6 As Single
        Public v7 As Single
    End Structure

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.333 из 5
Похожие ответы