Битовый флаг упаковывает несколько ответов «да» или «нет» в одно число. Каждый двоичный разряд в этом числе - отдельный переключатель: включен или выключен, установлен или не установлен. Это компактный способ для программы записать несколько небольших фактов в одном значении.
Откуда берется значение
Битовые флаги, их также называют битовыми полями, пришли из программирования. В языках, таких как C и C++, они позволяют разработчику хранить множество логических значений внутри одного байта или набора байт, когда к каждому биту или группе битов можно обратиться отдельно. Форматы файлов используют ту же идею, чтобы фиксировать параметры своего содержимого.
В отчете о метаданных чаще всего вы встретите битовый флаг у ZIP-архива и у форматов Office, которые фактически являются ZIP-контейнерами: документов DOCX, XLSX и PPTX. Файлы ODT и электронные книги EPUB тоже хранят этот флаг, но отчет может его не показывать. Формат ZIP присваивает каждому элементу внутри архива битовый флаг общего назначения, и устанавливает его программа, которая создала архив. Это значение никто не вводит вручную.
Как читать это значение
Флаг обычно показывается в шестнадцатеричном виде, системе счисления по основанию 16, где число пишется с префиксом 0x. Значение 0x0 означает, что ни один переключатель не включен, это обычный случай. Значения вроде 0x2 или 0x808 означают, что один или несколько битов включены, и читают их, переводя число в двоичную форму и рассматривая каждый разряд.
Полезно знать три переключателя ZIP:
- первый бит помечает элемент как зашифрованный, то есть для него нужен пароль
- четвертый бит указывает, что размер элемента и контрольная сумма записаны после данных, а не до них; так бывает, когда архив создается «налету»
- двенадцатый бит говорит, что имя элемента сохранено в UTF-8, кодировке символов, которая поддерживает акценты, нелатинские алфавиты и эмодзи
Почему это важно для вашего файла
Флаг объясняет поведение, которое иначе казалось бы непонятным. Именно через него документ с паролем объявляет, что он заблокирован, еще до того, как какая-либо программа попросит пароль. Из-за него некоторые приложения не могут сообщить размер элемента внутри архива, пока не распакуют его. И из-за него имена файлов с акцентами или китайскими иероглифами в одной программе распаковки выглядят правильно, а в другой превращаются в набор символов: одна учитывает этот переключатель UTF-8, а другая предполагает более старую кодировку.
При этом это поле не описывает качество и не содержит личной информации. Это техническая пометка о том, как был записан файл, полезная, когда что-то не открывается и вы хотите понять причину.