![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 78
|
Насколько я поняла это официально зафиксированный баг.
Может кто-то фиксил напильником? |
|
|||||
|
Modus ponens
|
Я просто не совсем в курсе, а к какому из протобаф типов относится флешевый Number? И нельзя ли заменить на int / uint?
__________________
Hell is the possibility of sanity |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
не встречал этого бага. А можно подробности?
Вот методы чтения/записи /** Read a {@code float} field value from the stream. */ public function readFloat():Number { return readRawLittleEndian32(); } /** Read a 32-bit little-endian integer from the stream. */ public function readRawLittleEndian32():int { var b1:int = readRawByte(); var b2:int = readRawByte(); var b3:int = readRawByte(); var b4:int = readRawByte(); return ((b1 & 0xff) ) | ((b2 & 0xff) << 8) | ((b3 & 0xff) << 16) | ((b4 & 0xff) << 24); } /** Write a {@code float} field, including tag, to the stream. */ public function writeFloat(fieldNumber:int, value:Number):void { writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32); writeRawLittleEndian32(value); } /** Write a little-endian 32-bit integer. */ public function writeRawLittleEndian32(value:int):void { writeRawByte((value ) & 0xFF); writeRawByte((value >> 8) & 0xFF); writeRawByte((value >> 16) & 0xFF); writeRawByte((value >> 24) & 0xFF); } Мне как то не попадались float в моих проектах. Поэтому баг не замечал.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 23.02.2011 в 01:54. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 78
|
И еще я смогла прочитать только свою ютф строку
![]() То что сделал серверщик недопереварилось. А я в записях в байтах ни в зуб ногой( Второй рабочий день и показала ся дубом( А изменять на инты нельзя. |
|
|||||
|
Modus ponens
|
Это типы которые может записать протобаф. Каким образом вы записиваете флешевый Number?
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 78
|
Я записывала всеми способами которые только есть для чисел в протобуфе, если покопатся в исходниках видно что поддержка намберов там планируется но не доделана.
Как и таинственный тип гроуп который только в константах живет но не обрабатывается. |
|
|||||
|
Modus ponens
|
Хорошо... поставим вопрос по-другому... на каком языке написана принимающая сторона, что принимающая сторона ожидает получить? Самое простое решение было бы записывать Number просто как 8 байт (ByteArray), и тогда если на принимающей стороне существует аналог Number от туда его и прочитать. Есть еще вариант, записать Number как 2 int64, один знаковый для целой части, другой - нет - для дробной. Этого бы точно хватило, чтобы Number поместился. Но это ровно в 2 раза больше, чем нужно для того, чтобы записать Number.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 78
|
Так я в самом флеше не могу прочитать что сформировала.
Делать два инта мне запретили. Чесно гря даже не знаю на чем сервер, помоему на си. Они хотят чтобы все работало без костылей. И без правки серверной части протобуфа. А дробные числа будут туда-сюда летать толпами и со свистом... |
|
|||||
|
Modus ponens
|
Ну дробные - вы определитесь, может вам хватит float? И вы не ответили на вопрос. Как сервер присылает Number - откуда вы его пробуете прочитать? (В protobuf есть float - это, на сколько я понимаю 32 бита, и есть double, это, по-идее и должен быть флешевый Number). Если мое предположение правильное, то используйте соответствующие методы ByteArray - read/writeFloat и read/writeDouble... Я не уверен какой endian используется в protobuf, но, опять же, вариантов у вас всего два, если не big endian, то small endian.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|