在Javascript中将unescape字符串转换为十六进制值

时间:2015-06-09 19:53:50

标签: javascript

我使用JavaScript生成以下字符串:

"ISCP\x00\x00\x00\x10\x00\x00\x00\x09\x01\x00\x00\x00\x00\!1PWR01\x0D\x0A"

它代表一串文本和十六进制值。

实际上,实际的底层字符串是这样构建的:

"ISCP\\x00\\x00\\x00\\x10\\x00\\x00\\x00\\x09\\x01\\x00\\x00\\x00\\x00\\!1PWR01\\x0D\\x0A"

因为我必须首先逃避斜线才能与他们一起工作。

现在我必须以某种方式将此字符串转换为一串链接的Hex值,以便我可以通过TCP连接发送它。 结果看起来像这样:

\x49\x53\x43\x50\0\0\0\x10\0\0\0\t\x01\0\0\0\0\x21\x31\x50\x57\x52\x30\x31\r\n

但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式查找字符串中的所有\xHH - 样式序列,并将其替换为实际值。由于您无法动态创建文字\xHH转义序列,因此您需要使用String.fromCharCode的替换程序回调:

var newString = myString.replace(/\\x([0-9A-F][0-9A-F])/g, function(m, g1) {
    return String.fromCharCode(parseInt(g1, 16));
});

将每个\x后面的两位数解析为base-16值,然后使用该数字作为字符代码创建一个新的单字符字符串。