- ベストアンサー
入力ファイルをバイナリにする利点
CSV形式の入力ファイルをテキストではなく、バイナリのCSVに変換して利用する利点てなんでしょうか? つまり、とあるプログラムで「.csvファイル」を、エディタで開くと文字化けする「拡張子なし(または.dat)ファイル」に変換してからそれを入力ファイルとしているのですが、素人の自分から考えると、テキスト形式で作ったCSVファイルをそのまま入力ファイルにすればいいんじゃないかと思ってしまいます。 バイナリの方が読み込み、書き込みが速くなるのでしょうか? またはバイナリでないとできないことがあるのでしょうか? ポインタなどが関係しているのでしょか? ちなみにその開発環境はVC++です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おそらく、「バイナリのCSV」という表現が不適切で、単に、テキストファイル(たまたまCSV)を一度、バイナリのファイルに変換して、そのバイナリのファイルを入力にしているということですよね? それは、入力データの準備をサボるときに使う手法でもあります。 元々のプログラムは、バイナリファイルを読み込むように作られているのでしょう。 なぜ、バイナリファイルなのかは、そのプログラムの設計者に聞かなければなりませんが、わざわざテキストからプログラムの内部表現に変換するのが面倒だとか。 で、それとは別に、そういう設計だと、入力データをバイナリで準備するのが大変だということで、入力データは編集しやすいテキストファイルにしたというのが実情だと思います。 こういう場合、もとのプログラム(バイナリデータを読むもの)を変更して、バグを生み出すよりは、別の単純な変換ブログラムを介在させて(単純なものはバグも少ない)乗り切るというのは、よくある方法です。 独立したプログラムでなくても、処理が分離できるだけでも、見通しは良くなりますから。
その他の回答 (1)
- Wr5
- ベストアンサー率53% (2173/4061)
>つまり、とあるプログラムで「.csvファイル」を、エディタで開くと文字化けする csvファイルを開いたのはどのプログラムなんでしょう? 単に文字コードの違いで化けていただけ…なんじゃないんですか? 外部データをバイナリで扱うのであればcsvである必要性はないワケですが……。 # まぁ、もちろんcsv形式でもいいでしょうけどね。 # テキストエディタでお手軽に編集できないって状況でcsvにする利点はなさげですけど。 >バイナリの方が読み込み、書き込みが速くなるのでしょうか? >またはバイナリでないとできないことがあるのでしょうか? 数値で扱いたい場合に数字→数値変換しないで済む。 って利点はあるでしょうね。 上記のようにcsvである必要は全くありませんが。 # あと、環境によってはエンディアンが問題になるかも知れませんが。
お礼
回答ありがとうございます。 手元にある資料によると、CSVテキストをバイナリに変換しているのは確かです。 バイナリのCSVというのは違ったかもしれなません。 もしかしたらメモリマップなんとかが関係しているかもしれないです。 もう少し調べてみます。
お礼
回答ありがとうございます。 まさにその通りだと思います。 ちなみによくわかっていないのですが、一口にバイナリに変換すると言っても いろいろなバイナリがあって ソースを見ないとわからないですよね?(^_^;) たとえば、.csvをバイナリモードで開いてどういう変換をかけて.datに するのかなんてソース見ないとわからないですよね?(~_~;)