SWFのバイナリーを読む
仕様書を読んでいてもぜんぜん実感がわかないので、
とりあえず、簡単なものを作成してみることにしよう。
空のSWFファイルとかを書いてみるだけでもけっこう違ってくると
思います。
現時点の問題は8bit(1byte)ごとの情報ならばC言語で最初から入っている
writeなんかを使えば問題なくできるとおもうのですが。
5bit とか 11bitとか、1byteでくくれないものについては少し工夫が
必要になるとおもいます(単純により優れた方法を私が知らないだけかもしれませんが)
そこで、SWFのバイナリーを作成する前に、
(今回はバイナリエディターで直接書きません、C言語を使う予定)
1byteに収まらないものを無理くり1byteにしてしまってから書き込んでいく
作業を受け持ってくれる関数を作成していくことしましょう。
(たいしたものは作りませんし私は作れません。)
たとえば 4bitと5bitのデーターを書き込むときには、
8bitのデーターと1bitのデーターに分けて書き込むということを行います。
こんなものを作成しました
bitsStream.c
ちなみに、これは相当問題だらけのソースです。まず
ビット演算とかけてshiftというような名前を使っていたりしますが
実際はま少し異なることを行う関数だったりします。
そして、shiftFileStreamを二度続けるとコアダンプします。
FileStreamという名前の意味がわかりません。(ソース名とも違っています)
機能の説明
newFileStream_size(int) ,指定したbit数のデーターを保持するFileStreamという構造体ポインター返します。
addFileStream(FileStream,FileStream)、データどうしほFileStreamのlengeにしたがってつなげます、
peintFileStream(FileStream); FileStreamが保持するデーターを表示します。
これだけです、時間をかけていないのがばればれですね
、たぶん私が使う以外には使い道はないでしょう。
|
おわり
次に続く・・・?
|