Sweet07
22.12.2017, 09:55
Кто знает как обойти эту букашку? Или что это такое?
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
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