2014-02-14 52 views
0

在JavaScript中,我有一個整數數組。我想要將這些整數中的每一個的十六進制值轉換爲Int8Array並將這些值回顯到控制檯。將整數轉換爲Int8Arrays並使它們在JavaScript命令行上正確回顯

對於下面的代碼,控制檯呼應[8, 5, 4, 4, 7, 0, 0, 0, 0, 0]當我預計[89,50,4E,47,...]

var data = [137,80,78,71]; // equals 0x89,0x50,0x4E,0x47 
var hexValueArrayBuffer = new ArrayBuffer((data.length+1)*2); 
var hexValueInt8Ary = new Int8Array(hexValueArrayBuffer); 

var ixx=0; 
for(var index in data){ 
    var hexValue = data[index].toString(16); 
    hexValueInt8Ary.set(hexValue,ixx++); 

    console.log("Added "+hexValue); 
    if(ixx==data.length){ 
      console.log(hexValueInt8Ary); 
    } 
} 

由此看來,似乎只有每項預期結果的前半添加。我能做些什麼來獲得預期的結果:

[89,50,4E,47,...] 

回答

1

int8Arrays只是存儲整數(獨立於基數) - 但您試圖存儲字符串。只需直接存儲值。讀取它們時,可以將它們轉換爲十六進制,但基本不會是值的一部分。

var data = [137,80,78,71]; // equals 0x89,0x50,0x4E,0x47 
var hexValueArrayBuffer = new ArrayBuffer((data.length+1)*2); // Why twice the size? 
var hexValueInt8Ary = new Int8Array(hexValueArrayBuffer); 

for(var i = 0; i < data.length; i++){ 
    hexValueInt8Ary.set[i] = data[i]; // you could use set to set all values at once 
    var hexValue = hexValueInt8Ary[i].toString(16); 

    console.log("Added "+hexValue); 
} 
console.log(hexValueInt8Ary); 

}

相關問題