Словарь

Что такое битовый флаг?

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

bit-flag

Битовый флаг упаковывает несколько ответов «да» или «нет» в одно число. Каждый двоичный разряд в этом числе - отдельный переключатель: включен или выключен, установлен или не установлен. Это компактный способ для программы записать несколько небольших фактов в одном значении.

Откуда берется значение

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

В отчете о метаданных чаще всего вы встретите битовый флаг у ZIP-архива и у форматов Office, которые фактически являются ZIP-контейнерами: документов DOCX, XLSX и PPTX. Файлы ODT и электронные книги EPUB тоже хранят этот флаг, но отчет может его не показывать. Формат ZIP присваивает каждому элементу внутри архива битовый флаг общего назначения, и устанавливает его программа, которая создала архив. Это значение никто не вводит вручную.

Как читать это значение

Флаг обычно показывается в шестнадцатеричном виде, системе счисления по основанию 16, где число пишется с префиксом 0x. Значение 0x0 означает, что ни один переключатель не включен, это обычный случай. Значения вроде 0x2 или 0x808 означают, что один или несколько битов включены, и читают их, переводя число в двоичную форму и рассматривая каждый разряд.

Полезно знать три переключателя ZIP:

  • первый бит помечает элемент как зашифрованный, то есть для него нужен пароль
  • четвертый бит указывает, что размер элемента и контрольная сумма записаны после данных, а не до них; так бывает, когда архив создается «налету»
  • двенадцатый бит говорит, что имя элемента сохранено в UTF-8, кодировке символов, которая поддерживает акценты, нелатинские алфавиты и эмодзи

Почему это важно для вашего файла

Флаг объясняет поведение, которое иначе казалось бы непонятным. Именно через него документ с паролем объявляет, что он заблокирован, еще до того, как какая-либо программа попросит пароль. Из-за него некоторые приложения не могут сообщить размер элемента внутри архива, пока не распакуют его. И из-за него имена файлов с акцентами или китайскими иероглифами в одной программе распаковки выглядят правильно, а в другой превращаются в набор символов: одна учитывает этот переключатель UTF-8, а другая предполагает более старую кодировку.

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

Мета-ключи