Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как пользоваться byteArray.readInt()? (http://www.flasher.ru/forum/showthread.php?t=178290)

anmelegov 18.04.2012 17:17

как пользоваться byteArray.readInt()?
 
собственно вопрос в заголовке... у меня есть byteArray, в нем числа, если я читаю из него 4 байта в другой byteArray, а потом тот byteArray читаю методом readInt, то получается, а если я из исходного массива просто несколько раз вызываю readInt, то первое число читается, а потом какая-то фигня идет дальше... такое ощущение что он сдвигает поинтер не на 4 байта

КорДум 18.04.2012 17:24

Так и читается.
Код AS3:

// имеем 8 байт
bt.readInt();
// осталось 4 байта
bt.readInt();
// массив bt пуст

Иными словами, у Вас после первых четырех байт идет вовсе не инт, а short, byte, UTFString или нечто иное.

anmelegov 18.04.2012 17:24

очень сложно написал, напишите мне кодом просто чтоб я понял... в строке идет 2 пропуска строки, потом идут 4 инта, как это прочитать?

Добавлено через 1 минуту
Цитата:

Сообщение от КорДум (Сообщение 1075703)
Так и читается.
Код AS3:

// имеем 8 байт
bt.readInt();
// осталось 4 байта
bt.readInt();
// массив bt пуст

Иными словами, у Вас после первых четырех байт идет вовсе не инт, а short, byte, UTFString или нечто иное.

как посмотреть структуру массива который приходит?

Добавлено через 3 минуты
когда я делаю readBytes(x, offset), то offset такое ощущение что не сначала "сдвигает" окно, а сконца

КорДум 18.04.2012 17:32

Вот пример:
Код AS3:

//пакет выглядит так:
//type (1b) length (2b) message (Nb)
type = byteArray.readByte();
length = byteArray.readShort();
message = byteArray.readBytes(0, length);

Это не псевдокод. При чтении byteAviables (или как там это свойство) уменьшается на количество считанных байтов. "Каретка" четния тоже смещается.

Добавлено через 48 секунд
Цитата:

в строке идет 2 пропуска строки
А это я не понял.

anmelegov 18.04.2012 17:35

в сокет приходит сначала 2 перевода каретки, потом 16-тиричное число, а потом нужные мне байты

КорДум 18.04.2012 17:39

Перевод каретки виндовый или юниксовый? В первом случае это 2 байта, во втором 1 на один перевод каретки.
Код AS3:

readShort();
readShort();
var numb:int = readInt();
var str:String = readUTFBytes(0, bytesAvailable);

Это если за раз пришел один пакет, полностью и не склеенный.

anmelegov 18.04.2012 17:43

можно как-нибуть во flashDevelop посмотреть структуру массива который приходит на сокет? или надо на угад парсить? я даже не знаю какой там endian

КорДум 18.04.2012 17:45

endian посмотреть можно, поставив брейкпоинт и глянув в дебаггере. А вот содержимое, к сожалению, нет. Самого это несколько разочаровывало, приходилось наугад и трейсами.

anmelegov 18.04.2012 17:46

трейсом байты не выводятся =)

-De- 18.04.2012 17:51

Написать трейсилку байтаррея на полчаса с перекуром задачка.


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

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