SWF内における基本的なデータ構造について

DATA STRUCTURE

SWF内では数多くのデータ型が定義されていますが、データ量を最小にするために、可変長ビットフィールドを用いることがあります。その実例として、RECT型をみてみましょう。

RECT型






フィールド説明
NbitsUB[5]RECT型のそれぞれのフィールドのビット長。
XminSB[Nbits]矩形の中でのx座標の最小値(単位はtwip)
XmaxSB[Nbits]矩形の中でのx座標の最大値(単位はtwip)
YminSB[Nbits]矩形の中でのy座標の最小値(単位はtwip)
YmaxSB[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型のデータを図式で表せば、








フィールド説明
NbitsUB[5]=1011RECT型のそれぞれのフィールドのビット長。
XminSB[Nbits]=00001111111x座標の最小値(127twip)
XmaxSB[Nbits]=00100000100x座標の最大値(260twip)
YminSB[Nbits]=00000001111y座標の最小値(15twip)
YmaxSB[Nbits]=01000000010y座標の最大値(514twip)



STRING型



フィールド説明
StringUI8[0以上]SWF6以上ではUTF-8エンコードされている。
StringEndUI8 = 0x00null文字


Stringの終了はC等でのASCII文字の取扱いと同様、0x00(null文字)で表します。