ビットフラグとは、複数の「はい/いいえ」の情報を1つの数値にまとめて持たせる方法です。その数値の中の各ビット(二進数の桁)が、それぞれ別々のスイッチとして機能します。オンかオフか、設定されているかいないかを表します。1つの値の中に、いくつかの小さな事実をコンパクトに記録するための仕組みです。
値の由来
ビットフラグ(ビットフィールドとも呼ばれます)は、プログラミングから来た仕組みです。CやC++といった言語では、1バイトまたは複数バイトの中に多くのブール値を格納し、それぞれのビットやビットのグループを個別に扱えるようにします。ファイル形式も同じ考え方を利用して、ファイル内容に関する各種オプションを記録しています。
メタデータレポートの中でビットフラグを見る可能性が最も高いのは、ZIPアーカイブと、その内部でZIPコンテナとして構成されているOffice形式のファイルです。具体的には DOCX、XLSX、PPTX などのドキュメントです。ODT ファイルや EPUB 電子書籍もこのフラグを保持していますが、レポートには表示されないことがあります。ZIP 形式では、アーカイブ内の各項目に「汎用ビットフラグ」が割り当てられ、その値はアーカイブを作成したプログラムによって設定されます。この値を人が手入力することはありません。
値の読み取り方
フラグは通常、先頭に0xが付いた表記で示される16進数で表示されます。0x0という値は、どのスイッチも設定されていないことを意味し、これが一般的な状態です。0x2 や 0x808 のような値は、1つ以上のビットがオンになっていることを表し、その数値を2進数に変換し、それぞれの桁の状態を見ることで内容を読み取ります。
ZIPのスイッチのうち、知っておくとよいものが3つあります。
- 最初のビットは、その項目が暗号化されていることを示し、パスワードが必要であることを意味します。
- 4番目のビットは、その項目のサイズとチェックサムがデータの前ではなく後ろに書き込まれたことを示します。これは、アーカイブが逐次的に作成された場合に起こります。
- 12番目のビットは、その項目名がUTF-8で保存されていることを示します。UTF-8は、アクセント付き文字や非ラテン文字、絵文字などを表現できる文字エンコーディングです。
ファイルにとって重要な理由
ビットフラグは、そうでなければ不思議に感じるような振る舞いを説明してくれます。パスワード保護された文書が、プログラムからパスワードを求められる前に「ロックされています」と宣言している場所が、このフラグです。また、一部のアプリがアーカイブ内の項目を展開し終わるまで、そのサイズを表示できない理由でもあります。さらに、アクセント付き文字や中国語などを含むファイル名が、ある解凍アプリでは正しく表示されるのに、別のアプリでは文字化けする理由でもあります。一方はそのUTF-8スイッチに従い、もう一方は古いエンコーディングを前提としているためです。
このフィールドが行わないこともあります。それは品質の高さ・低さを示すことや、個人情報を保持することです。これは、そのファイルがどのように書き込まれたかについての技術的なメモであり、ファイルが開けないときに原因を知る手がかりになります.