質問: プログラミングにはあまり関係がありませんが... (タグは近いのが無いので...) ゲームでインストーラ式のものがありますよね。 構成が ``` + install.exe + setup.bin + readme.txt ``` のようになっているものです。 私のイメージではinstall.exe が setup.bin をバイナリモードで読み込み、 その生成しているイメージです。 例えば 区切り文字を '\S' ( separator ) とします。 [setup.bin] ``` struct + /data/ + /image/ + image1.src + image2.src + main.exe + readme.txt main.exe (ここにmain.exeのバイナリデータ) \S image1.src (ここにimage1.srcのバイナリデータ) \S image2.src (ここにimage2.srcのバイナリデータ) \S readme.txt ゲーム名.exe\nこのゲームは... \S ``` のような感じで、C言語でもなんでもいいですが、 言語のバイナリファイルを読み込むクラス,関数等で「1バイトずつ」読み込んで... ってやっているのでしょうか? それとも単純に、項目名(構成,それぞれのファイルのやつ) を"[]" でくくって、 ``` [struct] + /data/ + /image/ + image1.src + image2.src + main.exe + readme.txt ``` のようにして、[struct] と 次の [] である [main.exe] までの位置を一つの文字列 (または1バイトずつ) 読み込んで書き込んでいるのでしょうか? 私はC++で組んでいますが、あまりバイナリファイルは扱っていません。 (最近扱い始めたばかりです。) 読み込み・書き込みはいいとして、使い方が単にテキストファイルのサイズが小さい版という感じです。 (本来は違うと思いますが...) もし(表現自体はどうあれ)私がイメージした通りでしたら私の表現方法が広くなるかもしれないので... 私が使う言語はC++ ( better-C )ですが、言語自体に言及しないのであればどの言語でも構いません。 [情報] 基本的な言語: C++ ( and Qt ) 頑張れば読めるかもしれない言語: Java, Python(?) OS: Windows系 (XP,7,10) (表現がOSによって異なるかもしれないし...実行ファイルとかみたいに)
回答: maisumakunさんの回答で良いと思いますが、 特定のバイトを区切り文字にするような方式はあまり使われないものの無いわけではないので補足しますと、 データ中に現れうる値を区切り文字に使う場合、データ中の当該の値を別のものに置き換える対処が一般的です。 例えばJPEGは0xFFを区切り文字に使いますが、データ中の0xFFは0xFF 0x00の2バイトに置き換えます。