2014-09-04 60 views
1

我想在javascript中將字符串轉換爲類型數組(特別是Uint8Array)。我試圖將字符串字符的ASCII值存儲爲單獨的數組元素。如何將字符串存儲爲類型數組?

var myString = 'foo bar baz " >'; 
var arr = new Uint8Array(myString); 
console.log(arr.length); // Why is this 0? 

爲什麼我創建的數組的長度是0?

+3

https://developer.mozilla.org/en-US/docs/Web/API/Uint8Array也許是因爲沒有一個構造函數接受'string'? – Yuck 2014-09-04 17:57:47

+0

做什麼var arr = []; arr.push(myString的);的console.log(arr.length); – user1572796 2014-09-04 17:58:22

+0

JavaScript字符串是Unicode/UTF-16。 Unicode是ASCII的超集。因此,如果字符恰好在ASCII範圍內,則只能存儲ASCII值。 – 2014-09-05 02:11:19

回答

1

從這個鏈接:http://jsperf.com/string-to-uint8array

這是創建一個字符串的Uint8Array的最快方法:

var str = "your string here"; 
var uint = new Uint8Array(str.length); 

for(var i=0, j=str.length; i<j; ++i){ 
    uint[i] = str.charCodeAt(i); 
} 

正如指出的那樣,你的錯誤來自構造函數不接受字符串參數的事實。相反,您可以根據字符串的大小分配數組,然後手動插入字符。

0

this link您可以看到您的構造函數需要一個長度或一個數組作爲單個參數。

我建議這樣的:

var myString = 'foo bar baz " >'; 
var arr = new Uint8Array(myString.length); 
console.log(arr.length); 
+0

這不會加載任何數據的數組,這是原始(非工作)代碼的意圖。 – Yuck 2014-09-04 18:03:53

相關問題