我知道这在其他语言中相当容易,但是如果我有两个 8 位无符号整数数组,并且想将它们连接到一个无符号 16 位整数数组,那么在 JS 中执行此操作的最佳方法是什么?
问问题
3215 次
1 回答
4
假设两个数组的长度相同,请使用带有按位左移运算符for
的循环;<<
var arr8A = [2, 3, 4], // example
arr8B = [5, 6, 7];
// code start
var arr16 = new Uint16Array(arr8A.length),
i;
for (i = 0; i < arr8A.length; ++i)
arr16[i] = (arr8A[i] << 8) + arr8B[i];
arr16;
反之亦然,但您使用按位零填充右移运算符>>>
和按位 AND 运算符&
;
// arr16 as above
var arr8A = new Uint8Array(arr16.length),
arr8B = new Uint8Array(arr16.length),
i;
for (i = 0; i < arr16.length; ++i) {
arr8A[i] = arr16[i] >>> 8;
arr8B[i] = arr16[i] & 255;
}
console.log(arr8A, arr8B);
您可以安全地使用这些运算符的最大大小数字是32 位整数。
于 2013-08-05T12:38:47.440 回答