|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2011
Сообщений: 16
|
Решил подать на отправку в матлабе следующий вектор [0:255], то есть строку чисел от нуля до двухсот пятидесяти пяти. На выходе из AIR получил следующее.
То, что загвоздка где-то в кодировке, по-моему становится очевидным. Что со всем этим делать не знаю. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Ну так посмотрите спецификацию протокола MatLab.
Вы отправляете набор интов - на выходе преобразовывете в utf - явно видно, что matlab работает с бинарным протоколом. Кодировка ни причём.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 13.04.2011 в 12:38. |
|
|||||
Регистрация: Mar 2011
Сообщений: 16
|
Любые числа сразу разбиваются на байты еще в матлабе, каждое число представляется в виде строки из некоторого количества байт (8 для "double", 1 для "uint", "boolean" и т.д.) и уже эти байтовые массивы отправляются по сети. Потом принимаем их в ActionScript с помощью readUTFBytes() и получается эта абракадабра, я просто противоречий не вижу, почему не работает. В сеть отсылаются байты, readUTFBytes() работает с байтами, а получается не пойми что.
|
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
вы сами написали, что оправляется не строка, а набор интов, а читаете вы как UTF строку.
читайте как readInt() в цикле, если вы уверены, что это 32 битный int, ну или readShort, readByte(судя по выдаче, это именно он).. почитайте хелп для начала
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 13.04.2011 в 15:30. |
|
|||||
а что за противоречия ? что именно не работает ? как вы парсите полученные данные ?
|
|
|||||
Регистрация: Mar 2011
Сообщений: 16
|
Котяра, спасибо. Пойду учить матчасть.
|
|
|||||
Регистрация: Mar 2011
Сообщений: 16
|
Числа Integer принимаются на ура. Все сделал как вы сказали:
А как принимать 64-битный Double? Если использовать readDouble() вот так: Появляется следующее сообщение: |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цикл неверный.
В первом случае нормально срабатывает т.к. в каждой итерации ты вычитываешь ровно 1 байт, В случае с double ты вычитываешь больше чем байт за итерацию и происходит чтение несуществующих данных. попробуй
__________________
Отряд Котовскага |
|
|||||
Регистрация: Mar 2011
Сообщений: 16
|
Использование такого кода не помогает
Все-равно вылезает та же ошибка: |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Я написал как надо попробовать, а вы опять занялись самодеятельностью
Не понимаете смысла что-ли? readDouble уменьшает длину буфера сокета на 64 бита(8байт), соответственно, уменьшается его длина (в байтах). Вычитываем до тех пор пока длина не станет нулевой. или делайте так: (обратите внимание на i+=8)
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 19.04.2011 в 11:51. |
Часовой пояс GMT +4, время: 22:50. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|