在节点js的string上调用parseInt将返回NaN

我使用节点js中的binaryjs模块从客户端传入一个Buffer。 这个缓冲区包含一个pipe道分隔的string,我最终在服务器上parsing。

在客户端我将string转换为Uint8Array。 我的string看起来像这样:

var stringToConvert = 'A_1_22|B_2_33|C_3_44'; 

当这个Uint8Array传递给我的服务器,它被作为一个缓冲区接收。 我首先将Buffer组合到一个数组中:

 var parts = []; // ... // as data is received: parts.push(data); 

当我有所有的数据stream,我将这个数组转换为一个string和“|”拆分:

 var arrayString = parts.toString().split("|"); 

这让我所需的数组输出:

 arrayString = ['A_1_22', 'B_2_33', 'C_3_33']; 

然后我迭代这个arrayString并再次被“_”分割。

 for(var i = 0; i < arrayString.length; i++) { var thisArray = arrayString[i].split("_"); // ... 

当我尝试迭代thisArray将第二个和第三个值转换为整数时,会发生问题:

 var intVal1 = parseInt(thisArray[1]); // returns NaN var intVal2 = parseInt(thisArray[2]); // returns NaN console.log(typeof thisArray[1]); // returns string 

在客户端运行相同的代码将string正确转换为整数。 不知道我在这里错过了什么?