Тема: Баги ByteArray
Показать сообщение отдельно
Старый 22.12.2017, 09:55
Sweet07 вне форума Посмотреть профиль Отправить личное сообщение для Sweet07 Найти все сообщения от Sweet07
  № 1  
Ответить с цитированием
Sweet07
 
Аватар для Sweet07

Регистрация: Jul 2011
Сообщений: 121
По умолчанию Баги ByteArray

Кто знает как обойти эту букашку? Или что это такое?

import flash.utils.ByteArray;

var byte:ByteArray=new ByteArray();
byte.writeByte(130); //записываю число в 0-й байт равное 1000 0010
byte.position=0 //перемещаю на начало массива
trace(byte.readByte()); //вычитываю байт и получаю -126
//-126 //какого, Карл!

я уже мозг сломал, почему запись 1000 0010 записывается как отрицательное число вида 1111 1111 1111 1111 1111 1111 1000 0010?
Понимаю, что это может быть из-за переполнения, но как если пишу байт...
до 127 запись и чтение проходят нормально, но выше начинается эта пляска.
Флэш криво пишет биты и не может записать нормально число!?
Я уже пробовал и сдвигать побитно:

byte.writeByte(8200 >> 6);

итог - то же самое. Дохожу да 64, а потом КАРАМБА и -126

Скрин на калькулятор (Ссылка постоянно убивалась, поэтому вставил так - пробелы уберите вокруг yadi):

https:// yadi .sk/i/7dxndkmN3Qqvft
__________________
for (year=0;year<life;year++) {birthday(year)}


Последний раз редактировалось Sweet07; 22.12.2017 в 11:29. Причина: продолжение рассуждения...