バイナリ
(バイナリ形式 から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/08/14 16:05 UTC 版)
![]() |
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2024年6月)
|

バイナリファイル(英:binary file)とは、テキストファイルではないコンピュータファイルである。
情報技術においては、コンピュータが直接的に処理するために2進数で表現されるデータのことを指すが、一般的にテキスト形式以外のデータ形式を指す言葉として用いられる。バイナリデータ、バイナリコード、バイナリ形式などとも呼ばれる。対義語はテキストファイル。
日本においては、単に「バイナリ」と略称で呼ばれることも多い。この場合、文脈によっては、ファイル形式ではなく、算術的な用法の二進法のことを指すことがあるため注意が必要である。
概要
現代のコンピュータは、扱う情報を全てビット(二進数)形式で管理している。つまり、厳密にはコンピュータ上で扱うファイルは、テキストファイルを含め、全て「バイナリファイル」である。しかし、データの種類を区別する便宜上、バイナリファイルとテキストファイルとは対比して用いられる。
バイナリファイルは、コンピュータが直接的に処理することを前提に設計されている。バイナリエディタを用いて、ファイルの内容を16進数などで表示させることはできるが、その内容を人間がただちに理解することはできない。
一方、テキストファイルは、人間が直接内容を読むことを前提に設計されている。このフォーマットでは、二進数で構成されたデータは文字コードに基づいてエンコード・デコードされ、人間が読める文字列として表示される。この処理はテキストエディタなどでリアルタイムで行われ、人間は直接内容を読んで理解することができ、更にそのまま編集を加えることができる。
このテキストファイルの使用は非常に便利かつ特徴的であったため、その他のファイルと区別するための言葉として「バイナリファイル」という名称が使われるようになった。そういう意味では言葉としての「バイナリファイル」は一種のレトロニムと言える。
バイナリの例
たとえば画像ファイルや音声ファイル、圧縮されたファイルなどはバイナリが使われることが多い。テキストはバイナリと比べてデータ量が増大しやすく、また誤差をもともと含む浮動小数点数を10進数の文字列として変換すると正確に表現できず、ファイルを読み込む際に完全に復元できないことがあるからである。例えば、PNM画像形式におけるP1/P2/P3のようにASCIIテキストが使われる場合もあるが、バイナリのP4/P5/P6と比べてデータ量が増えてしまう。バイナリであれば8ビット(1オクテット、≒1バイト)で済むような0から255までの範囲のデータであっても、テキストであれば10進数表記の可変長文字列として表現する場合は最大3文字必要となり、さらに隣接データとの境界を示す区切り文字も含めると4文字必要となる。16進数表記の固定長文字列として表現する場合でも2文字必要となるので、仮に8ビット単位でエンコーディングしても16ビット(2オクテット、≒2バイト)必要になってしまう。
バイナリファイルの中にはファイルの先頭にメタ情報(ヘッダ)を持っているものがある。たとえばGIFファイルは複数の画像を持つことができ、ファイルの先頭でそれぞれの画像を区別する情報が記述されている。そのようなメタ情報を持たないファイルはフラットバイナリファイルと呼ばれる。コンピュータプログラム関係では、テキストであるソースコードとの対比からコンパイルされたコードのファイル等[注釈 1]を指してバイナリと呼ばれることがしばしばある。プロプライエタリのソフトウェアはバイナリの形態で提供されるが、特に商用ソフトウェアは他者による解析(リバースエンジニアリング)や改変・改竄・クラッキングを防ぐために、リソースファイルやメディアファイル、ライセンスファイルなどの一部がさらに難読化や暗号化を施した状態で提供されることが多い。
バイナリ形式でのデータの表現方法はさまざまなものがある。例えば、数値であれば0から9までの数をパターン化して記録するBCD、ゾーンビットと実際の数値、正の数か負の数かを記録する符号ビットからなるアンパック10進数(ゾーン10進数)や、実際の数値と符号ビットだけからなるパック10進数などがある。文字列の扱いとしては、ヌル文字(C系言語のリテラル表記では'\0'
)で終端する方法(ヌル終端文字列、ゼロ終端文字列)や、長さ[注釈 2]を別に保持する、といった方式がある。前者では、'\0'
を含むようなバイナリを「文字列」として扱うことができない。
C言語におけるファイルストリームのように、処理系によってはテキストモードとバイナリモードで改行文字の扱いが異なる場合もある[1]。C++のストリームはデフォルトでテキストモードだが、バイナリモードを指定することもできる[2]。
注意点
バイナリフォーマットでは、エンディアンなどに互換性・移植性の上で注意が必要であり、それを避けてテキスト形式で記録することも少なくない(UNIX哲学も参照)。Javaや.NETのような標準化された環境に代表されるように、一般的には符号付き整数の内部表現に2の補数を採用し、またIEEE 754準拠の浮動小数点数を採用することが規定されているシステムやプラットフォームが多いものの、そうでない環境とのデータ交換にはバイナリは不向きである。なお浮動小数点数の誤差やループした構造の表現[要説明]など、テキスト形式にも注意が必要な点は多い。
2バイト以上の数値型や、固定長の配列によるヌル終端文字列などをメンバーに持つ構造体をバイナリとしてそのままシリアライズすることもあるが、処理系やCPUアーキテクチャによってデフォルトのパディングが異なるので、メモリレイアウトを規定するアライメントをソースコード上で明示的に指定する必要がある。
脚注
注釈
- ^ オブジェクトファイルや実行ファイルなど。またそのような機械語(ネイティブバイナリ)に限らず、WebAssemblyやJavaなどのバイトコード類なども含む。
- ^ オクテット数、あるいは文字(符号点)の個数。
出典
関連項目
バイナリ形式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/19 04:55 UTC 版)
「Standard Triangulated Language」の記事における「バイナリ形式」の解説
STLにはバイナリー形式も用意されており、ASCIIにくらべファイルサイズが小さく済み、読み書きの際のエンコード/デコードがないぶん高速となる。ファイルサイズの点では、ASCII表示したときに浮動小数点の桁が多いときほど、ASCII形式との差が開き有利となる。ファイル読み書き処理の点では、SSDのような高速ストレージの転送速度を生かすためにはバイナリである必要が生じうる。 バイナリーSTLファイルは80バイトの任意の文字列で開始される(通常内容は無視される。ただし、solid から記載を始めた場合にASCII形式であると誤認識するソフトウェアが存在し、注意を要する)。次に4バイトの整数でファイルに含まれる三角形の枚数が示される。そのあとに、それぞれの三角形のデータが枚数分続くという構造になっている。終了コードはない。最後の三角形のデータがファイルの後端となる。 それぞれの三角形は12個の32ビット浮動小数点で示される。ASCII形式のSTLファイルと同様に、最初に三角形の法線ベクトル(3個)、次に三角形の各座標(3x3=9個)が X/Y/Zの順番で示される。その後2バイトの未使用データが続く。ほとんどのソフトはこの部分を無視するので値はそれぞれゼロである。 浮動小数点の表記方法はIEEE方式(IEEE 754)である。エンディアンは、仕様文書に明示されていないがリトルエンディアンである。 UINT8[80] - ヘッダー(任意の文字列)UINT32 - ファイルに含まれる三角形の数foreach triangle REAL32[3] - 法線ベクトル REAL32[3] - 座標 1 REAL32[3] - 座標 2 REAL32[3] - 座標 3 UINT16 - 未使用データend
※この「バイナリ形式」の解説は、「Standard Triangulated Language」の解説の一部です。
「バイナリ形式」を含む「Standard Triangulated Language」の記事については、「Standard Triangulated Language」の概要を参照ください。
- バイナリ形式のページへのリンク