Tim*_*sen 3 javascript bytearray
我有以下代码:
var v = [0xFF, 0xFF];
alert((v[0]<<8) | v[1]);
Run Code Online (Sandbox Code Playgroud)
它会提醒65535(最大短值).
如何将此字节数组视为带符号的short,并获取此数组的带符号值.
假设高位是符号:
var sign = v[0] & (1 << 7);
var i = ((v[0] & 0x7F) << 8) | v[1];
if (sign) {
i = -i;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用二进制补码表示:
var i = (((v[0] << 8) | v[1]) << 16) >> 16);
Run Code Online (Sandbox Code Playgroud)
左移16位将所有位向左移动; 并且算术16位右移在移位时处理符号.(Javascript使用32位整数进行移位操作.)