私はファイル形式についていくつか読んでいますが、それらに非常に興味があります。フォーマットを作成するプロセスは何だろうと思います。たとえば、.jpeg、.gif、またはオーディオ形式です。どのプログラミング言語を使用しますか(プログラミング言語を使用する場合)?
このサイトは、この質問は締め切られる可能性があると警告しましたが、それは私が知識を追求する上で取るリスクにすぎません。:)
私はファイル形式についていくつか読んでいますが、それらに非常に興味があります。フォーマットを作成するプロセスは何だろうと思います。たとえば、.jpeg、.gif、またはオーディオ形式です。どのプログラミング言語を使用しますか(プログラミング言語を使用する場合)?
このサイトは、この質問は締め切られる可能性があると警告しましたが、それは私が知識を追求する上で取るリスクにすぎません。:)
フォーマットを作成するプロセスは何ですか。たとえば、.jpeg、.gif、またはオーディオ形式です。
手順1.ファイルに含めるデータを決定します。
ステップ2.ファイルでそのデータを表現する方法を設計します。
ステップ3.他の人が理解できるように書き留めます。
それでおしまい。ファイル形式は単なるアイデアです。正しくは、それは「合意」です。これ以上何もない。
誰もが与えられた情報を与えられた形式で置くことに同意します。
どのプログラミング言語を使用しますか(プログラミング言語を使用する場合)?
I / Oを実行できるすべてのプログラミング言語は、ファイル形式を持つことができます。処理できるファイル形式に制限があるものもあります。一部の言語は、他の言語と同様に低レベルのバイトを処理しません。
しかし、「フォーマット」は「実装」ではありません。
フォーマットはコンセプトです。実装は-まあ-実装です。
ワードプロセッサが便利なツールであることがわかるかもしれませんが、ファイル形式の仕様を書くためにプログラミング言語は必要ありません。
基本的に、ファイルの情報をビットのシーケンスとしてどのように保存するかを決定する必要があります。これは些細なことかもしれませんし、非常に難しいかもしれません。簡単な例として、非常に原始的なビットマップ画像形式は、ビットマップの幅を表す1つの符号なし32ビット整数で始まり、次にビットマップの高さを表すもう1つのそのような整数で始まる可能性があります。次に、24ビット/ピクセルを使用して、ピクセルの色を左から右、上から下(ピクセルの行1、ピクセルの行2など)に順番に書き出すことを決定できます。赤の場合は8ビット+緑の場合は8ビット+青の場合は8ビットの形式。たとえば、青と赤のピクセルが交互に並んだ8×8のビットマップは次のように保存されます。
00000008000000080000FFFF00000000FFFF0000...
ささいな例では、それは実際に保存したいデータに依存します。通常、 BITMAPINFOHEADERなどの多くのレコード/構造を定義し、それらが来る順序、それらをどのようにネストするかを指定します。また、多くのインデックスとルックアップテーブルを作成する必要がある場合があります。私自身、かなりの数のファイル形式を作成しました。最近では、AlgoSimの保存に使用されるASD(AlgoSim Data)ファイル形式です。構造。このようなファイルは、多数のレコード(おそらくネストされている)、ルックアップテーブル、魔法の単語(構造の開始、構造の終了などを示す)、およびカスタム定義形式の文字列で構成されます。ファイル形式を単純化することが多い典型的なことの1つは、レコードにそのサイズと、レコードに続くカスタムデータ部分のサイズに関するデータが含まれていることです(レコードが何らかのヘッダーである場合、カスタム形式のデータの前にあります。ピクセルカラーまたはサウンドサンプル)。
以前にファイル形式を使用したことがない場合は、Windows 3ビットマップ形式などの非常に単純な形式を学び、独自のBMPエンコーダー/デコーダー、つまりBMPファイルを作成および読み取るプログラムを作成することをお勧めします(スクラッチ)、読み取ったBMPファイルを表示します。次に、基本的な考え方を説明します。
基本的に、ファイルは、同じプログラムまたは別のプログラムのいずれかによって、将来ロードバックする必要がある情報を格納するためにのみ存在します。本当に良いファイル形式は、次のように設計されています。
あなたは間違いなくProtocolBuffersとThriftを調べることに興味があります。これらのツールは、下位互換性のあるファイル形式と下位互換性のあるファイル形式を設計するための最新の原理的な方法を提供します。