42
在JavaScript中,Uint8Array
和Uint8ClampedArray
有什么区别? 据我所知,Uint8ClampedArray
与画布一起用于像素操作。为什么是这样,有什么好处?Uint8Array和Uint8ClampedArray之间的区别
在JavaScript中,Uint8Array
和Uint8ClampedArray
有什么区别? 据我所知,Uint8ClampedArray
与画布一起用于像素操作。为什么是这样,有什么好处?Uint8Array和Uint8ClampedArray之间的区别
看看Uint8ClampedArray和Uint8Array的示例,看起来不同之处在于分配值时如何处理值。
如果您试图将一个元素设置为一个被限制的数组,其值为0-255
以外的任何值,它将简单地默认为0或255(取决于值是小还是大)。一个正常的Uint8Array
数组只需要该值的前8位。
实例:
var x = new Uint8ClampedArray([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 0
console.log(x.length); // 2
var x = new Uint8Array([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 211
console.log(x.length); // 2
还要注意的是'Uint8Array([0.9])''是[0]','但Uint8ClampedArray([0.9])''是[1]',即。夹紧版本使用四舍五入,但基本版本使用地板。 –
OP提到这是用于画布中的像素值,这是饱和算术的捷径吗? – Indolering
@Felix,所以'Uint8Array'更高性能,因为没有边界检查需要完成? – Pacerier