2011-09-20 103 views
0

我必須在JavaScript中將字符串轉換爲字節(16位)。我可以在.net中在下面的代碼中做到這一點,但我必須改變這個使用JavaScript的舊經典ASP應用程序。字符串到字節數組

string strShared_Key = "6fc2e550abc4ea333395346123456789"; 
int nLength = strShared_Key.Length; 
byte[] keyMAC = new byte[nLength/2]; 
for (int i = 0; i < nLength; i += 2) 
    keyMAC[i/2] = Convert.ToByte(strShared_Key.Substring(i, 2), 16); 

這是JavaScript函數,但不會像上面的.net代碼那樣返回相同的輸出。

function String2Bin16bit(inputString) { 
     var str = ""; // string 
     var arr = [];  // byte array 
     for (var i = 0; i < inputString.length; i += 2) { 
      // get chunk of two characters and parse to number 
      arr.push(parseInt(inputString.substr(i, 2), 16)); 
     } 
     return arr; 
    } 
+0

可能重複 - 轉換字節數組字符串](http://stackoverflow.com/questions/3195865/javascript-html-converting-byte-array-to-string)問題/解決方案有兩種方法。 – epascarello

+0

epascarello - 這個例子不適用於16位。 – user228777

回答

1

你想parseInt(x, 16)將讀x的數量和解析它在考慮到這樣的軸承,它在基部16

var str = "aabbcc"; // string 
var arr = [];  // byte array 
for(var i = 0; i < str.length; i += 2) { 
    arr.push(parseInt(str.substr(i, 2), 16)); // get chunk of two characters and parse to number 
} 
[使用Javascript/HTML的
+0

我試着寫下面的函數,但沒有輸出我在.net函數中得到的確切值。 函數String2Bin16bit(inputString){var str =「aabbcc」; //字符串 var arr = []; (var i = 0; i user228777

+0

是JavaScript嗎?你正在使用'arr [i/2] = arr.push',這是沒有意義的。 'arr.push'只是將值添加到數組中,所以不需要索引。 – pimvdb

+0

是的它是JavaScript,仍然結果不像.net功能一樣。我更改爲 函數String2Bin16bit(inputString){0} {0} var str =「」; //字符串 var arr = []; //獲取字符數組 (var i = 0; i user228777