У меня есть следующий код:
var v = [0xFF, 0xFF]; alert((v[0]<<8) | v[1]);
И он предупреждает 65535 (максимальное короткое значение).
Как я могу обработать этот байтовый массив как подписанное короткое и получитьзначение этого массива со знаком.
Предполагая, что старший бит является знаком:
var sign = v[0] & (1 << 7); var i = ((v[0] & 0x7F) << 8) | v[1]; if (sign) { i = -i; }
http://jsfiddle.net/p4TQw/1/
Если вы используете дополняют два представление:
var i = (((v[0] << 8) | v[1]) << 16) >> 16);
16-битный сдвиг влево перемещает все биты влево; а арифметическое 16-битное правое смещение заботится о знаке при смещении. (Javascript использует 32-битные целые числа для операций сдвига.)
http://jsfiddle.net/p4TQw/3/