AS3 ByteArray readShort - PullRequest
       1

AS3 ByteArray readShort

1 голос
/ 26 октября 2011

Мне нужно прочитать последовательность байтов, которая была записана разными способами (writeBite, writeShort и writeMultiByte), и отобразить их со списком байтов HEX на видео. Моя проблема - конвертировать число 1500, я попробовал другой номер, и результаты были правильными ... Вот пример:

var bytes:Array = [];
var ba:ByteArray = new ByteArray();
ba.writeShort(1500);

ba.position = 0;

for (var i=0; i<ba.length; i++)
{
   bytes.push(ba.readByte().toString(16));
}
trace(bytes);//5,-24 i'm expetting 5,DC

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Метод readByte читает подписанный байт (в диапазоне от -128 до 127).Самый значимый бит определяет знак.В случае чисел, превышающих 127 (например, DC), этот бит будет 1, а число будет рассматриваться как отрицательное число. два дополнения отрицательного байта *1007* используются для получения значения со знаком.В случае DC, то есть 1101 1100 в двоичном коде, дополнение будет 0010 0011, что составляет 23.Добавляется единица, и значение будет рассматриваться как отрицательное, что даст вам -24, который вы видите.

Вы должны использовать readUnsignedByte для чтения значений от 0 до 255.

0 голосов
/ 26 октября 2011

Поскольку в AS3 нет реального типа байтов, readByte() возвращает целое число. Вы можете попробовать это вместо:

for (var i=0; i<ba.length; i++)
{
    bytes.push(ba[i].toString(16));
}
...