- ベストアンサー
バイナリファイルとバイナリ文字列の違いとは?
- バイナリファイルとは、文字コードなどの解釈を一切行わずにバイト値のみが記述されたデータのことです。
- バイナリ文字列は、テキストデータをバイト配列として表現したもので、UTF-8などの文字エンコーディングに基づいて各文字がバイト列として表されます。
- バイナリ文字列の保存されたファイルは、単なるテキストファイルであり、バイナリファイルではありません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html > をみるとバイナリ列は1バイトを連ねたものだというらしいです。 解説者はそんな「1バイトのデータを連ねた塊。」という15文字では説明しきれないと判断したからさらに説明を続けているわけです。「1バイトを連ねたものだというらしいです」なんてそこで勝手に解釈をやめてはダメですよ。 リンク先ではさらに次のような解説が続いています。 -------- 扱うデータの型や形式などに立ち入らずに、任意のデータを単なるビットパターンの連なりとして汎用的に処理する場合に用いられるデータ型で、その内容は実際には文字や数値であったり、あるいは画像や音声、機械語のプログラムであったりする。 -------- つまり,その内容が実際には文字であったとしても,データ形式に立ち入らずに単なるビットパターンとして処理すればそれはバイナリ列だと説明しています。 > この【文】という文字列はバイナリ列になるわけですよね? > この【文】という文字だけを保存したbun.txtというファイルは > バイナリーファイルになるのでしょうか? 合っているけれど,間違ってもいます。 10進数表記で 230 150 135。2進数表記で 11100110 10010110 10000111 という3バイトを,単なるビットパターンの連なりとして扱うなら,それはバイナリ列であり,それが保存されたファイルは拡張子が何であろうとバイナリファイルです。 しかしそれを,UTF-8データの連なりとして扱うなら(かつ,そのビットパターンがUTF-8形式に正しく準拠していたのなら),それはUTF-8テキスト文字列であり,それが保存されたファイルは拡張子が何であろうとUTF-8テキストファイルです。 (".txt"という拡張子は,その内容がテキストファイルであることを保証するものではなく,ソフトウェアに対して「中身が何かは保証しないけれど,テキストファイルとして扱って欲しい」と指示する働きでしかないので) 質問者が「この【文】という文字列は」「この【文】という文字だけを」と口にしている時点で,すでにその内容が文字として解釈可能なバイト列だということを前提にしています。であるなら,それはテキスト文字列・テキストファイルと呼ぶべきものでしょう。 そして繰り返しますが,そのテキスト文字列・テキストファイルを,データ形式に立ち入らずに単なるビットパターンとして扱えば,それはバイナリ列・バイナリファイルとしても処理できます。
その他の回答 (2)
- tsunji
- ベストアンサー率20% (196/958)
すべてのファイルはバイナリファイルと言えます。 拡張子がTXTやBIN、EXEであっても、バイナリエディタなどで開けば00h~FFh(16進数)の数字の羅列でしかありません。 人間がファイルの中を見て、文字が書いてあるからテキストファイルだなと判別しているだけです。
- Wr5
- ベストアンサー率53% (2173/4061)
>この【文】という文字列はバイナリ列になるわけですよね? 使う環境次第……でしょうかね。 # たとえばC言語なら「文字列」として扱う為には終端コードが必要なパターンがほとんどですし。 # ASCIIコード以外の場合だとまち事情が変わるコトもあるでしょうしね。 # wchar_t型の配列で文字列を…ということもあるでしょうし……。 >例えばこの【文】という文字だけを保存したbun.txtというファイルはバイナリーファイルに >なるのでしょうか? 全てのファイルはバイナリデータの塊でしかありません。 例外的に特定の文字コード(と一部の制御コード)を含むファイルを「テキストファイル」として扱っているだけです。 # 環境によってはそういうテキストファイルを扱い易くしたライブラリなんかもあるでしょう。 # 改行コードなんかは制御コードになりますし(環境によってCR/CR+LF/LFと差異はありますが)、 # JISコードで記録されていれば切替の為のエスケープシーケンスなんかも含むでしょう…。 で……今回のバイナリ列(E6h 96h 87h)だけが記録されたファイルだと…… 「UFT-8の文字コードを使用したテキストファイル」という区分にすることも可能でしょう。 もちろん、ただのバイナリファイルとしても扱えますが。