将两个JS uint8数组连接到uint16数组的最快方法?

时间:2013-08-05 12:33:35

标签: javascript binary concatenation typed-arrays

我知道这在其他语言中相当容易,但如果我有两个8位无符号整数数组,并希望将它们连接到一个无符号16位整数数组,那么在JS中执行此操作的最佳方法是什么? ?

1 个答案:

答案 0 :(得分:4)

假设两个 Arrays 具有相同的长度,请使用for循环{/ 3}};

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;

反之亦然,但您使用bitwise left shift operator <<bitwise zero-fill right shift operator >>>;

// 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位整数