0
我发现this,但它是无符号24位整数:如何在DataView中设置带符号的24位整数?
DataView.prototype.setUint24 = function(pos, val) {
this.setUint16(pos, val >> 8);
this.setUint8(pos+2, val & ~4294967040); // this "magic number" masks off the first 16 bits
}
简单地改变setUint16
为setInt16
和setUint8
为setInt8
似乎并没有工作。我对低级二进制的知识是非常有限的,所以我需要一些帮助。我明白大多数这种功能的:
val >> 8
只保留前16位来存储作为一个16位pos + 2
是因为一个16位整数占用2个字节中的空间- 至于术语
val & ~4294967040
,那么有一个评论大声笑。
我不太确定为什么只是改变对设置有符号值的方法的调用不起作用/我不太确定设置有符号/无符号值时为什么过程不同。
'val&〜4294967040' is silly; 'val&0xff'会更具可读性。无论如何,'setUint24'应该适用于没有变化的带符号整数。 – Ryan
@Ryan我至少需要使用'setInt16'和'setInt8'来代替它们的“无符号”选择吗?我猜我的代码有其他错误,然后... – maximedupre
不,它应该没有改变。 – Ryan