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