170 похожих чатов

Записывать содержимое бинарного файла в виде структуры (struct) с переменными

разных размеров, и комментариями к каждой переменной, это общепризнанный стандарт, или только особенность с/с++ разработчиков?

22 ответов

20 просмотров

Поясни вопрос.

Боюсь, вам предстоит сформулировать более развёрнутый вопрос и желательно с примером Если я верно понял ход мысли – нет, это не общепринятый способ сериализации в том числе и в C++

Это точно НЕ общепризнанный стандарт.

BS-135 Автор вопроса
Ofee Oficsu
Боюсь, вам предстоит сформулировать более развёрну...

я хотел скинуть картинку, но написало типа нельзя

Ofee Oficsu
Боюсь, вам предстоит сформулировать более развёрну...

Речь же даже не о сериализации, а об описании формата

Слабоумие и отвага

Vlad Doc
Слабоумие и отвага

Почему же ? Вполне приемлимо

BS 135
я хотел скинуть картинку, но написало типа нельзя

Вы можете код скидывать в наиболее родном для него формате – текстовом, на какой-нибудь pastebin

Ilya Zviagin
Почему же ? Вполне приемлимо

Ну читать из файла ещё такое. А вот записывать структуры

BS-135 Автор вопроса
Ofee Oficsu
Вы можете код скидывать в наиболее родном для него...

struct eocdr { uint16_t disk_nbr; /* Number of this disk. */ uint16_t cd_start_disk; /* Nbr. of disk with start of the CD. */ uint16_t disk_cd_entries; /* Nbr. of CD entries on this disk. */ uint16_t cd_entries; /* Nbr. of Central Directory entries. */ uint32_t cd_size; /* Central Directory size in bytes. */ uint32_t cd_offset; /* Central Directory file offset. */ uint16_t comment_len; /* Archive comment length. */ const uint8_t *comment; /* Archive comment. */ }; то есть часто бывает что открываю любую статью про внутреннее устройство форматов файлов, и там что то вроде этого. даже если сам дальнейший код написан на другом языке

Ilya Zviagin
Речь же даже не о сериализации, а об описании форм...

Мне это совсем не очевидно было из вопроса, поэтому попытался предположить

BS 135
struct eocdr { uint16_t disk_nbr; /...

Речь про описание формата или про то, что надо реально записывать/считывать структуру?

BS 135
struct eocdr { uint16_t disk_nbr; /...

Это не стандарт, а просто удобство и логичное использование памяти. Зачем выделять больше, чем надо?

BS-135 Автор вопроса
Ilya Zviagin
Речь про описание формата или про то, что надо реа...

просто описание для примера, что типа - смотрите, читатели, там все вот такое

BS 135
struct eocdr { uint16_t disk_nbr; /...

Такой строки тут не может быть const uint8_t *comment; /* Archive comment. */

BS 135
struct eocdr { uint16_t disk_nbr; /...

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

BS-135 Автор вопроса
Ilya Zviagin
Такой строки тут не может быть const uint8_t *com...

согласен. это не мой код, да и сам я пока новичек в с/с++

BS 135
согласен. это не мой код, да и сам я пока новичек ...

Ещё добавлю, что стандартов описания форматов бинарных данных не существует. Ну или если и есть, то мало популярны.

Ilya Zviagin
Ещё добавлю, что стандартов описания форматов бина...

ну ведь в бинарных данных может быть что угодно, это же не одни файлы с блоком инструкций

BS 135
struct eocdr { uint16_t disk_nbr; /...

Обычно это псевдокод, призванный продемонстрировать идею с использованием родного, как это предполагается, для многих синтаксиса. Идиосинкразии досыпаются отдельными авторами по вкусу (можно, например, встретить uint32_t size; some_t data[size]; или даже применение шаблоноподобных конструкций). Кроме того, подобный синтаксис описания бинарного формата применяется здесь (продукт коммерческий, но все еще часто используемый). Edit: На всякий случай добавлю, что решений по бинарному парсингу для крестов существует несколько. С подборкой можно ознакомиться как минимум здесь.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта