我使用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
但我不知道该怎么做。
答案 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值,然后使用该数字作为字符代码创建一个新的单字符字符串。