SWF 9 以降では、エンコードされた可変長サイズの整数がサポートされます。 エンコードされた整数型は 1 種類だけです。
| 型 | コメント |
| EncodedU32 | 可変長サイズのエンコードされた 32-bit 符号無し整数 |
この、 32-bit 符号無しのエンコードされた整数値は、保存領域が可変長になっています。 数値の大きさにより、 EncodedU32 型は 1 ~ 5 バイトの間で長さが変化します (大きな値ほど大きな保存領域が要る)。 エンコードの方式:
EncodedU32 型の数は、次のようなアルゴリズムで元の数に戻すことができます。
int GetEncodedU32(unsigned char*& pos)
{
int result = pos[0];
if (!(result & 0x00000080))
{
pos++;
return result;
}
result = (result & 0x0000007f) | pos[1]<<7;
if (!(result & 0x00004000))
{
pos += 2;
return result;
}
result = (result & 0x00003fff) | pos[2]<<14;
if (!(result & 0x00200000))
{
pos += 3;
return result;
}
result = (result & 0x001fffff) | pos[3]<<21;
if (!(result & 0x10000000))
{
pos += 4;
return result;
}
result = (result & 0x0fffffff) | pos[4]<<28;
pos += 5;
return result;
}