【发布时间】:2011-09-18 11:36:33
【问题描述】:
我有以下代码:
var v = [0xFF, 0xFF];
alert((v[0]<<8) | v[1]);
它会提醒 65535(最大短值)。
如何将此字节数组视为有符号短,并获取此数组的有符号值。
【问题讨论】:
标签: javascript bytearray
我有以下代码:
var v = [0xFF, 0xFF];
alert((v[0]<<8) | v[1]);
它会提醒 65535(最大短值)。
如何将此字节数组视为有符号短,并获取此数组的有符号值。
【问题讨论】:
标签: javascript bytearray
假设高位是符号:
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 位整数进行移位操作。)
【讨论】:
Int16 v = -1; byte[] int16LittleEndian = BitConverter.GetBytes(v); Console.WriteLine(BitConverter.ToString(ba)); 我会得到FF-FF 作为回报。与Console.WriteLine( BitConverter.ToInt16(new byte[]{0xFF, 0xFF},0)); 相同,我得到-1;