SWF内における基本的なデータ構造について
DATA STRUCTURE
SWF内では数多くのデータ型が定義されていますが、データ量を最小にするために、可変長ビットフィールドを用いることがあります。その実例として、RECT型をみてみましょう。RECT型
フィールド | 型 | 説明 |
---|---|---|
Nbits | UB[5] | RECT型のそれぞれのフィールドのビット長。 |
Xmin | SB[Nbits] | 矩形の中でのx座標の最小値(単位はtwip) |
Xmax | SB[Nbits] | 矩形の中でのx座標の最大値(単位はtwip) |
Ymin | SB[Nbits] | 矩形の中でのy座標の最小値(単位はtwip) |
Ymax | SB[Nbits] | 矩形の中でのy座標の最大値(単位はtwip) |
NBitsフィールドについてですが、これは例をみると分かりやすいので、例をあげてみます。例えば、
Xmin | = | 127 [10進数] | = | 1111111 [2進数] |
Xmax | = | 260 [10進数] | = | 100000100 [2進数] |
Ymin | = | 15 [10進数] | = | 1111 [2進数] |
Ymax | = | 514 [10進数] | = | 1000000010 [2進数] |
のうち、もっとも桁数が多いのはYmaxの514でこれを表現するには11ビット必要(符号付きなので、01000000010)です。よって、可変長ビットフィールドの長さは11ビットあれば十分ということになるので、Nbitsには11が入ります。従って、このRECT型のデータを図式で表せば、
フィールド | 型 | 説明 |
---|---|---|
Nbits | UB[5]=1011 | RECT型のそれぞれのフィールドのビット長。 |
Xmin | SB[Nbits]=00001111111 | x座標の最小値(127twip) |
Xmax | SB[Nbits]=00100000100 | x座標の最大値(260twip) |
Ymin | SB[Nbits]=00000001111 | y座標の最小値(15twip) |
Ymax | SB[Nbits]=01000000010 | y座標の最大値(514twip) |
STRING型
フィールド | 型 | 説明 |
---|---|---|
String | UI8[0以上] | SWF6以上ではUTF-8でエンコードされている。 |
StringEnd | UI8 = 0x00 | null文字 |
Stringの終了はC等でのASCII文字の取扱いと同様、0x00(null文字)で表します。