2011-09-20 100 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