bicubic_bublic
слушай с u30 и u32 вроде чтение запись работает, правда запись иногда зацикливается...
а s32 вообще странно работает пишу одно число, а считывается другое )))
вот коды:

Код AS3:
public function writeVarUint32(value:uint):void
{
if (value == 0)
{
_byteArray.writeByte(0);
}
var byte:uint;
while (value != 0)
{
byte = value & 0x0000007f; // отрезаем 7 бит от числа
value = value >> 7; //смещаем на 7 бит
if (value != 0) //если что-то еще осталось добавляем 8-й бит флаг
{
byte = byte | 0x00000080;
}
_byteArray.writeByte(byte); //пишем текущий байт..
}
}
public function readVarInt32():int
{
var result:int = _byteArray.readUnsignedByte();
if (!(result & 0x00000080))
return (result << 25 ) >> 25;
result = (result & 0x0000007f) | _byteArray.readUnsignedByte()<<7;
if (!(result & 0x00004000))
return (result << 18 ) >> 18;
result = (result & 0x00003fff) | _byteArray.readUnsignedByte()<<14;
if (!(result & 0x00200000))
return (result << 11 ) >> 11;
result = (result & 0x001fffff) | _byteArray.readUnsignedByte()<<21;
if (!(result & 0x10000000))
return (result << 4 ) >> 4;
return (result & 0x0fffffff) | _byteArray.readUnsignedByte()<<28;
}
public function writeVarInt32(value:int):void
{
if (value >= 0)
{
writeVarUint32(value);
return;
}
var len:uint = 0;
var abs:uint = - value; // абсолютное значение value;
while (abs != 0) // длина в битах абсолютного значения
{
abs = abs >> 1;
len++;
}
abs = - value;
var signBytePos:uint = Math.floor(len / 7) + 1; // длина s32, порядковый номер байта в котором содержится знак-бит;
while (signBytePos-- != 0) {
var byte:uint = abs & 0x0000007f; // отрезаем 7 бит от числа
abs = abs >> 7; //смещаем на 7 бит
if (signBytePos != 0) //если что-то еще осталось добавляем 8-й бит флаг
{
byte = byte | 0x00000080;
}
else //последний байт - добавляем знак-бит
{
byte = byte | 0x00000040;
}
_byteArray.writeByte(byte); //пишем текущий байт..
}
}
Добавлено через 1 минуту
etc
ребята из swf utils читают почему то по другому ? )) из того что я привел выше в коде функции чтения их