2013-08-05 20 views

回答

3

假設兩個數組具有相同的長度,使用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位整數