Как вы создаете формат файла? - PullRequest
4 голосов
/ 23 июля 2010

Я немного читал о форматах файлов, и мне они очень интересны.Мне интересно, каков процесс создания формата.Например, .jpeg, или .gif, или аудиоформат.Какой язык программирования вы бы использовали (если вы вообще используете язык программирования)?

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

Ответы [ 4 ]

26 голосов
/ 23 июля 2010

каков процесс создания формата. Например, .jpeg, или .gif, или аудиоформат.

Шаг 1. Решите, какие данные будут в файле.

Шаг 2. Разработайте способ представления этих данных в файле.

Шаг 3. Запишите это, чтобы другие люди могли это понять.

Вот и все. Формат файла - это просто идея. Правильно, это «соглашение». Ничего больше.
Каждый согласен поставить данную информацию в указанном формате.

Какой язык программирования вы бы использовали (если бы вы вообще использовали язык программирования)?

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

Но «формат» - это не «реализация».

Формат - это концепция. Реализация - хорошо, - реализация.

5 голосов
/ 23 июля 2010

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

По сути, вам нужно решить, какова информация о файлехраниться в виде последовательности битов.Это может быть тривиально, или это может быть чрезвычайно сложно.В качестве тривиального примера очень примитивный формат растрового изображения может начинаться с одного 32-разрядного целого без знака, представляющего ширину растрового изображения, а затем еще одного такого целого числа, представляющего высоту растрового изображения.Тогда вы можете просто записать цвет пикселей последовательно, слева направо и сверху вниз (строка 1 пикселей, строка 2 пикселей, ...), используя 24-бит на пиксель, наформа 8 бит для красного + 8 бит для зеленого + 8 бит для синего.Например, растровое изображение 8 × 8, состоящее из чередующихся синих и красных пикселей, будет сохранено как

00000008000000080000FFFF00000000FFFF0000...

. В менее тривиальном примере это действительно зависит от данных, которые вы хотите сохранить.Как правило, вы определяете много записей / структур, таких как BITMAPINFOHEADER , и указываете, в каком порядке они должны прийти, как они должны быть расположены, и вам может потребоваться написать много указаний и поисковстолы.Я сам написал довольно много форматов файлов, в последнее время формат файлов ASD (AlgoSim Data) используется для сохранения структур AlgoSim .Такие файлы состоят из нескольких записей (возможно, расположенных), справочных таблиц, магических слов (указывающих начало структуры, конец структуры и т. Д.) И строк в определенном пользователем формате.Типичная вещь, которая часто упрощает формат файла, состоит в том, что записи содержат данные об их размере и размерах пользовательских частей данных, следующих за записью (в случае, если запись является своего рода заголовком, предшествующим данным в пользовательском формате, напримерцвета пикселей или образцы звука).

Если вы раньше не работали с форматами файлов, я бы посоветовал вам изучить очень простой формат, такой как формат Windows 3 Bitmap, и написать собственный кодер BMP./ decoder, то есть программы, которые создают и читают файлы BMP (с нуля) и отображают прочитанные файлы BMP.Тогда вам сейчас основные идеи.

3 голосов
/ 23 июля 2010

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

  1. Любой язык программирования может использоваться для его чтения или записи.
  2. Информация, которая может понадобиться программе из файла, может бытьбыстрый и эффективный доступ.
  3. Формат может быть расширен и расширен в будущем без нарушения обратной совместимости.
  4. Формат должен соответствовать любым специальным требованиям (например, устойчивость к ошибкам, сжатие, кодирование и т. д..) присутствует в домене, в котором будет использоваться файл
1 голос
/ 24 июля 2010

Вы, безусловно, заинтересованы в изучении протокольных буферов и Thrift .Эти инструменты предоставляют современный, принципиальный способ проектирования прямых и обратно совместимых форматов файлов.

...