浏览器和服务器javascript中的十六进制字符串输出不同

Hex string output different in browser and server javascript

本文关键字:字符串 输出 十六进制 服务器 javascript 浏览器      更新时间:2023-09-26

我想用这个小脚本用十六进制字符串包装一系列字符:

var resultBuffer = [];
var sourceBuffer = "004CS01".split('');
resultBuffer.push("''x" + "02");
for (var i = 0; i < sourceBuffer.length; i++) {
    resultBuffer.push(sourceBuffer[i]);
}
resultBuffer.push("''x" + "03");
resultBuffer.push("''x" + "62");
console.log(resultBuffer);   

我面临一个问题,同一个脚本会产生不同的输出。这来自浏览器:Fiddlehttp://jsfiddle.net/m5sUD/

["'x02", "0", "0", "4", "C", "S", "0", "1", "'x03", "'x62"] 

这来自nodejs服务器(请参阅http://runnable.com/me/U1NzLLgIj8pXRQq4):

[ '''x02', '0', '0', '4', 'C', 'S', '0', '1', '''x03', '''x62' ]

为什么不同?我需要服务器上的输出与浏览器中的输出一样。

浏览器和node.js的resultBuffer值相同。如果在resultBuffer中打印每个值,node.js和浏览器将打印相同的值。

尝试低于代码

for (idx in resultBuffer) console.log(resultBuffer[idx]);

在我的电脑中,node.js和browser会打印相同的以下值。

'x02
0
0
4
C
S
0
1
'x03
'x62

这只是node.js和浏览器中数组值的表示方法的问题。值相同。

我认为这是因为'在浏览器javascript中不是一个特殊字符,而它在node.js中是一个特殊的字符,因此它被另一个反斜杠' 转义