Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 10.12.2009, 12:57
DEAFFF вне форума Посмотреть профиль Отправить личное сообщение для DEAFFF Посетить домашнюю страницу DEAFFF Найти все сообщения от DEAFFF
  № 8  
Ответить с цитированием
DEAFFF
 
Аватар для DEAFFF

Регистрация: Feb 2004
Адрес: Россия, В. Новгород
Сообщений: 255
Отправить сообщение для DEAFFF с помощью ICQ
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 читают почему то по другому ? )) из того что я привел выше в коде функции чтения их
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир...

Создать новую тему   Часовой пояс GMT +4, время: 17:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:45.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.