написание структуры данных в C # относительно выравнивания байтов - PullRequest
2 голосов
/ 14 марта 2012

У меня проблема с выравниванием данных в файле, который я создаю из C # для использования в устаревшем приложении.

Все мои данные хранятся в виде списка структур.

 List<CParameterItem> m_Items = new List<CParameterItem>();

где CParameterItem выглядит следующим образом:

[StructLayout( LayoutKind.Sequential,Pack = 2 )]
public struct CParameterItem
{
    public byte ParamID;
    public ushort Size;
    public byte[] Data;
}

Когда я пытаюсь выполнить итерацию коллекции и записать ее в файл, у меня возникают проблемы с выравниванием байтов между каждым элементом (выравнивание байтов в каждой структуре корректно).

BinaryWriter bw = new BinaryWriter( File.Open( theFilename, FileMode.CreateNew ) );
        foreach ( CParameterItem param in m_Items )
        {
            bw.Write( param.ParamID );
            bw.Write( param.Size );
            bw.Write( param.Data );
        }
        bw.Close();

Есть идеи, как разобраться в упаковке между предметами?Большое спасибо.

...