Репликация заполнения структуры C в Java - PullRequest
4 голосов
/ 08 мая 2009

Согласно здесь , компилятор C будет выгружать значения при записи структуры в двоичный файл. Как говорит пример в ссылке, при написании структуры, подобной этой:

struct {
 char c;
 int i;
} a;

в двоичном файле, компилятор обычно оставляет безымянное, неиспользуемое отверстие между полями char и int, чтобы гарантировать правильное выравнивание поля int

Как я могу создать точную копию двоичного выходного файла (сгенерированного в C), используя другой язык (в моем случае, Java)?

Существует ли автоматический способ применения заполнения Си в выходных данных Java? Или мне нужно просмотреть документацию компилятора, чтобы увидеть, как он работает (кстати, компилятор g ++).

Ответы [ 11 ]

0 голосов
/ 08 мая 2009

Вы можете изменить упаковку на стороне c, чтобы гарантировать, что заполнение не используется, или, альтернативно, вы можете посмотреть на результирующий формат файла в шестнадцатеричном редакторе, чтобы позволить вам написать синтаксический анализатор в Java, который игнорирует заполненные байты.

...