如何在javascript中将字节数组转换为字符串

时间:2013-11-21 19:44:09

标签: javascript arrays

我从SOAP服务器获得响应,它是一个固定大小的字节数组。

例如,我得到{ rsp: { errorNumber: '1', errorMessage: { item: [Object] } } }

[ '73',
  '110',
  '118',
  '97',
  '108',
  '105',
  '100',
  '32',
  '112',
  '97',
  '115',
  '115',
  '119',
  '111',
  '114',
  '100',
  '0']

如何将该数组转换为javascript的字符串?

3 个答案:

答案 0 :(得分:3)

数组中的每个“字节”实际上是字符的ASCII代码。 String.fromCharCode会将每个代码转换为字符。

它实际上支持无数个参数,所以你可以这样做:

String.fromCharCode.apply(String, arr);

在您的阵列上运行时,您会获得:"Invalid password"

正如@Ted Hopp指出的那样,最后的0将为字符串添加一个空字符。要删除它,只需执行:.replace(/\0/g,'')

String.fromCharCode.apply(String, arr).replace(/\0/g,'');

答案 1 :(得分:2)

这是你想要的,String.fromCharCode功能:

var foo = [ 
  '73',
  '110',
  '118',
  '97',
  '108',
  '105',
  '100',
  '32',
  '112',
  '97',
  '115',
  '115',
  '119',
  '111',
  '114',
  '100',
  '0'];

var str = '';
for (var i=0; i<foo.length; ++i) {
  str+= String.fromCharCode(foo[i]);
}

console.log(str);

或更好:

var str = String.fromCharCode.apply(null, foo);

答案 2 :(得分:2)

这是使用地图的另一种选择:

var str = arr.map(String.fromCharCode).join("");