![]() |
protobuf-actionscript3 не пишет тип Number
Насколько я поняла это официально зафиксированный баг.
Может кто-то фиксил напильником? |
Я просто не совсем в курсе, а к какому из протобаф типов относится флешевый Number? И нельзя ли заменить на int / uint?
|
не встречал этого бага. А можно подробности?
Вот методы чтения/записи Код AS3:
Код AS3:
Мне как то не попадались float в моих проектах. Поэтому баг не замечал. |
И еще я смогла прочитать только свою ютф строку:)
То что сделал серверщик недопереварилось. А я в записях в байтах ни в зуб ногой( Второй рабочий день и показала ся дубом( А изменять на инты нельзя. |
Код:
0 Varint int32, int64, uint32, uint64, sint32, sint64, bool, enum |
Я записывала всеми способами которые только есть для чисел в протобуфе, если покопатся в исходниках видно что поддержка намберов там планируется но не доделана.
Как и таинственный тип гроуп который только в константах живет но не обрабатывается. |
Хорошо... поставим вопрос по-другому... на каком языке написана принимающая сторона, что принимающая сторона ожидает получить? Самое простое решение было бы записывать Number просто как 8 байт (ByteArray), и тогда если на принимающей стороне существует аналог Number от туда его и прочитать. Есть еще вариант, записать Number как 2 int64, один знаковый для целой части, другой - нет - для дробной. Этого бы точно хватило, чтобы Number поместился. Но это ровно в 2 раза больше, чем нужно для того, чтобы записать Number.
|
Так я в самом флеше не могу прочитать что сформировала.
Делать два инта мне запретили. Чесно гря даже не знаю на чем сервер, помоему на си. Они хотят чтобы все работало без костылей. И без правки серверной части протобуфа. А дробные числа будут туда-сюда летать толпами и со свистом... |
если он дробные не может передавать, прийдется альтернативы использовать: байтаррай, строкой, можно нумбер умножить на 10000 и получиться инт, сервер один фиг, чего то делает с данными, пусть делит инт на 10000 и будут нормальные нумберы.
|
Ну дробные - вы определитесь, может вам хватит float? И вы не ответили на вопрос. Как сервер присылает Number - откуда вы его пробуете прочитать? (В protobuf есть float - это, на сколько я понимаю 32 бита, и есть double, это, по-идее и должен быть флешевый Number). Если мое предположение правильное, то используйте соответствующие методы ByteArray - read/writeFloat и read/writeDouble... Я не уверен какой endian используется в protobuf, но, опять же, вариантов у вас всего два, если не big endian, то small endian.
|
| Часовой пояс GMT +4, время: 23:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.