我有以下代码:
var v = [0xFF, 0xFF];
alert((v[0]<<8) | v[1]);
它警告65535(最大短值)。
如何将此字节数组视为带符号的short,并获取此数组的带符号值。
答案 0 :(得分:5)
假设高位是符号:
var sign = v[0] & (1 << 7);
var i = ((v[0] & 0x7F) << 8) | v[1];
if (sign) {
i = -i;
}
如果您使用Two's complement表示:
var i = (((v[0] << 8) | v[1]) << 16) >> 16);
左移16位将所有位向左移动;并且算术16位右移在移位时处理符号。 (Javascript使用32位整数进行移位操作。)