2
我知道這在其他語言中相當容易,但如果我有兩個8位無符號整數數組,並且想將它們連接到一個無符號16位整數數組,那麼在JS中這樣做的最好方法是什麼?連接兩個JS uint8數組到uint16數組的最快方法?
我知道這在其他語言中相當容易,但如果我有兩個8位無符號整數數組,並且想將它們連接到一個無符號16位整數數組,那麼在JS中這樣做的最好方法是什麼?連接兩個JS uint8數組到uint16數組的最快方法?
假設兩個數組具有相同的長度,使用for
循環與bitwise left shift operator <<
;
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 zero-fill right shift operator >>>
和bitwise AND 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位整數。