INI
🖇️
INI

💢 Обзор

Файлы INI для фрилансеров бывают двух типов: текстовые и двоичные (BINI).

При чтении INI, текстового или двоичного, следует учитывать несколько ключевых аспектов:

  • Разделы и свойства в них рассматриваются как последовательность инструкций, а не как сериализованные списки свойств.
  • Свойства могут иметь одинаковые имена в одном разделе, а несколько разделов могут иметь одинаковые имена.
  • Сохранение порядка разделов и свойств имеет важное значение.
  • Свойство раздела может иметь до 256 значений, разделенных запятой в текстовом формате и явно подсчитанных в двоичном формате.
  • Отдельные значения являются примитивными типами: булевы, целые, вещественные и строковые.
  • Свойства в текстовом формате в разделе без каких-либо значений рассматриваются как булевы со значением true.
  • При работе со значениями из текстового формата необходимо соблюдать осторожность — при запросе преобразуйте их в нужный тип.

Свойство с именем «comment» можно использовать для комментариев, поскольку BINI не содержит обычных комментариев INI.

💨 Двоичный INI (BINI)

Порядок байтов Little-endian.

🔭 Заголовок

Имя Тип Описание
singnature uint32 Должно быть 0x494E4942 («BINI»).
version uint32 Версия формата (0x1).
namesOffset uint32 Смещение до блока словаря.
sections varying
names varying
  • Словарь представляет собой соединенную коллекцию строк ASCIIz (строки ASCII, завершающиеся символом NUL).
  • Лучше всего сохранять имена разделов и свойств перед значениями строк в словаре.
  • После заголовка читайте разделы до namesOffset.

💢 Раздел

Имя Тип Описание
nameOffset uint16 Смещение имени раздела в словаре.
propertyCount uint16 Количество объектов недвижимости указано ниже.
properties varying

🔭 Недвижимость

Имя Тип Описание
nameOffset uint16 Смещение имени свойства в словаре.
valueCount uint8 Количество значений свойства.
values varying

🔥 Value

Имя Тип Описание
type uint8 Тип свойства.
value byte[4] Значение свойства.
  • Двоичный формат ограничивает количество значений для каждого свойства 256, поэтому лучше не превышать это количество в текстовом формате.
  • Интерпретируйте значение четырех байтов на основе предшествующего типа:
Тип Значение Описание
Boolean 0x0 Наиболее значимый бит в значении является булевым.
Integer 0x1 Значение представляет собой 32-разрядное целое число со знаком.
Float 0x2 Значение представляет собой 32-разрядное число с плавающей запятой.
String 0x3 Значение представляет собой 32-разрядное целое число без знака, которое является смещением до строки в блоке словаря.