Javascript unsigned short to signed short

时间:2011-09-18 11:36:34

标签: javascript bytearray

我有以下代码:

var v = [0xFF, 0xFF];
alert((v[0]<<8) | v[1]);

它警告65535(最大短值)。

如何将此字节数组视为带符号的short,并获取此数组的带符号值。

1 个答案:

答案 0 :(得分:5)

假设高位是符号:

var sign = v[0] & (1 << 7);
var i = ((v[0] & 0x7F) << 8) | v[1];
if (sign) {
    i = -i;
}

http://jsfiddle.net/p4TQw/1/


如果您使用Two's complement表示:

var i = (((v[0] << 8) | v[1]) << 16) >> 16);

左移16位将所有位向左移动;并且算术16位右移在移位时处理符号。 (Javascript使用32位整数进行移位操作。)

http://jsfiddle.net/p4TQw/3/