![]() |
как прочесть и записать u30 число?
вопрос к профессионалам
делаю небольшой декомпилятор на ас3, дошел уже до ABC тега там в принципе не сложно, но есть какие то числа: Цитата:
http://www.adobe.com/devnet/actionsc...m2overview.pdf есть достаточно похожий опенсорс проект swfutils http://swfutils.riaforge.org/ но к сожалению там тока чтение этих чисел, например u30 у них читается так: Код AS3:
|
оттуда же:
Цитата:
Код AS3:
|
Код AS3:
|
ооо спасибо ребята!!!
а что на счет u32 и s32? интересует чтение и запись... |
u32 и s32 можно прочитать стандартными методами ByteArray.
|
это то я понимаю )))
я имею ввиду эти два The types u32 and s32 represent variable-length encoded 32-bit unsigned and signed integer values respectively. они подобны u30 на сколько я понял |
Цитата:
Цитата:
Добавлено через 6 минут Код AS3:
|
bicubic_bublic, s32 вообще-то обычный writeInt/readInt. Единственное, что нужно читать ручками — u30.
|
Цитата:
readInt - считывает 4 байта |
спасибо! ))) буду пробовать
|
Цитата:
|
Цитата:
Цитата:
|
Это всё читается одним и тем же методом. Во всяком случае, за два с половиной года после прочтения этой доки проблем не возникло.
А за терминологию Adobe нужно оторвать руки по пояс. |
Цитата:
то есть если я напишу .writeInt(1) - то на выходе будет 1 байт или 4 ? |
Цитата:
Цитата:
|
уважаемый etc давайте не будем спорить, мы щаз говорим о разных вещах, вы об общепринятых u32 s32 а мы об условно так же названных но variable-length encoding for u30, u32, and s32 для файла абс виртуальной машины.
|
А я говорю, что всё читается одним и тем же методом.
|
bicubic_bublic
слушай с u30 и u32 вроде чтение запись работает, правда запись иногда зацикливается... а s32 вообще странно работает пишу одно число, а считывается другое ))) вот коды: Код AS3:
etc ребята из swf utils читают почему то по другому ? )) из того что я привел выше в коде функции чтения их |
да.. немного намудрил с s32
Код AS3:
|
все равно что то не то
записываю число = -22222 получаю = B2 D2 FE FF C7 читая получаю = 2147461426 если записывать просто = 22222 то получим = CE AD 01 FF C7 читаем = 22222 что бы это значило? |
Цитата:
кажется так правильнее Код AS3:
|
не все равно какой то косяк (((
|
как записывается -22222 теперь?
и как считывается скажем 0x40 ? |
теперь -22222 записывается так = B2 D2 FE FF 47
читается так = 2147461426 байт 0x40 читается так = -64 |
Код AS3:
|
мне кажется чтение я не то взял ) какое то оно странное и непонятно где в нем берется минус...
|
(result << 25 ) >> 25; - вот тут берется знак
|
вставил новые строки, при записи зациклолось
Добавлено через 37 секунд Цитата:
|
Код AS3:
|
ура заработало! ))))))
Добавлено через 1 минуту супер спасибо огромное!!! |
тут еще ошибка была.. нужно было смещать беззнаково
Код AS3:
|
понятно... но вроде и так работало )))
а надо ли сделать так? Код AS3:
|
Цитата:
и да.. разумеется надо прекратить выполнение функции в это случае |
ага )
|
| Часовой пояс GMT +4, время: 00:14. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.