var buffer = new ArrayBuffer(8);
console.log(buffer);
var z = new Uint8Array(buffer);
z[0]=255;
console.log(z);
比如这样的代码,输出为
ArrayBuffer { byteLength: 8 }
Uint8Array [ 255, 0, 0, 0, 0, 0, 0, 0 ]
如果传入256,输出[0,0,0,0,0,0,0,0]
如果传入257,输出[1,0,0,0,0,0,0,0]
我知道无符号8位最大255,但是超出255的部分既没有报错也没有进位,而是看起来像是循环了一样,计算机内部是怎么处理的?
解决了。。
如同 C 語言,不同類型的 TypedArray 可以容納的 bytes 範圍是固定的,超過此一範圍,就會出現「溢位(Overflow)」,例如 Uint8Array 中僅能放入 1 byte = 8 bits 的資料,如果放入 0x100(256,9 bits),就會溢位。
那溢位後,資料會怎麼呈現呢?
每個語言實作不盡相同,TypedArray 的溢位處理規則和多數語言相同:捨棄溢出的 high bits。