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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.07.2008, 16:47
Niagon вне форума Посмотреть профиль Отправить личное сообщение для Niagon Найти все сообщения от Niagon
  № 1  
Ответить с цитированием
Niagon

Регистрация: Jul 2008
Сообщений: 6
По умолчанию Как преобразовать несколько байт из ByteArray в int

Требуется взять из ByteArray несколько байтов, отмерить от первого байта несколько бит и все остальные биты преобразовать в int. Как это лучше сделать? Необходимо сохранение знака.

например
Код:
0101001110011101101101100
    ----------------
Здесь я взял 3 байта отмерил от начала 4 бита и хочу преобразовать 16 следующих бит в int. Помогите чем можете.

Старый 09.07.2008, 18:38
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Случайно это не попытка прочитать swf_rect?

Старый 09.07.2008, 18:59
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var bin_source:String = '11111111110100111001110110110110'; //32 bit integer
var bin_int:int = parseInt(bin_source, 2);
trace(bin_source);
var ba:ByteArray = new ByteArray();
ba.writeInt(bin_int);
ba.position = 0;
var result:int = ba.readInt();
//trace(result.toString(2));
var signesToStrip:int = 3;
var mask0:uint = uint(2 << (signesToStrip - 1)) - 1;
var mask1:uint = uint(2 << (31 - signesToStrip));

result = result - mask0 * mask1; //drop 3 bits from the start
trace(result.toString(2));
Ну, как-нть так...
__________________
Hell is the possibility of sanity

Старый 09.07.2008, 19:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Код:
var bin_source:String = '11111111110100111001110110110110'; //32 bit integer
var bin_int:int = parseInt(bin_source, 2);
trace(bin_source);
var ba:ByteArray = new ByteArray();
ba.writeInt(bin_int);
ba.position = 0;
var result:int = ba.readInt();
//trace(result.toString(2));
var signesToStrip:int = 3;
var mask0:uint = uint(2 << (signesToStrip - 1)) - 1;
var mask1:uint = uint(2 << (31 - signesToStrip));

result = result - mask0 * mask1; //drop 3 bits from the start
trace(result.toString(2));
Ну, как-нть так...
Та уж проще:
Код:
var src:String = '0101001110011101101101100';
trace(src);
src = src.substr(4, 16);
var bin:Number = parseInt(src, 2);
trace(bin.toString(2));

Старый 09.07.2008, 19:54
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Эээээ... ну как бы строки там только для того, чтобы было видно, что в байтаррей будет записано... для работы они не нужны...
__________________
Hell is the possibility of sanity

Старый 09.07.2008, 21:36
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Эээээ... ну как бы строки там только для того, чтобы было видно, что в байтаррей будет записано... для работы они не нужны...
Ну мало ли, а вдруг строками будет проще

Старый 10.07.2008, 17:01
Niagon вне форума Посмотреть профиль Отправить личное сообщение для Niagon Найти все сообщения от Niagon
  № 7  
Ответить с цитированием
Niagon

Регистрация: Jul 2008
Сообщений: 6
Строками проще, но уж больно медленно. Спасибо попробую.

Цитата:
Случайно это не попытка прочитать swf_rect?
А что такое если не секрет?


Последний раз редактировалось alexcon314; 10.07.2008 в 17:09.
Старый 10.07.2008, 18:05
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Niagon Посмотреть сообщение
А что такое если не секрет?
Это из спецификации формата swf.

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

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

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


 


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


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