如何在JavaScript中将一个字节(8位)转换为有符号整数?

时间:2019-06-13 09:58:22

标签: javascript byte bit

我需要将一个字节转换为Java脚本有符号整数。我已经检查过this link可以转换2个字节,但是如何降级并仅转换一个字节?

例如0x0A为10,0xD4呢?

3 个答案:

答案 0 :(得分:1)

Javascript 将按位运算符处理为有符号的 32 位整数。

知道了这一点,如果要对字节进行符号扩展,则需要将字节的最高位(表示符号)传播到三十二位整数中的所有高位。这可以通过以下方式实现:

value << 24 >> 24

这样做是将字节移到 32 位整数的顶部,然后将其向下移回保留符号位

同样,您可以使用以下命令对 16 位值进行符号扩展:

value << 16 >> 16

答案 1 :(得分:0)

我想出了这个解决方案:

print_random()

希望它可以为其他人节省一些时间。 convertToSignedInt(0x81)//返回-1

答案 2 :(得分:0)

此解决方案使用负数的2补码转换,这是对负数进行编码的标准方式。

function uncomplement(val, bitwidth) {
    var isnegative = val & (1 << (bitwidth - 1));
    var boundary = (1 << bitwidth);
    var minval = -boundary;
    var mask = boundary - 1;
    return isnegative ? minval + (val & mask) : val;
}

uncomplement(0xFF,8)返回-1
uncomplement(0x80,8)返回-128
uncomplement(0x7F,8)返回127