【发布时间】:2012-12-06 04:34:56
【问题描述】:
十六进制字符串:
var str = [0x6A, 0xE8, 0x05, 0x01, 0x00, 0x01, 0xD9, 0xDC, 0x0A, 0x09];
byte = '';
for (var i=0; i < str.length; i++) {
byte += String.fromCharCode( parseInt(str[i], 16).toString(16) );
}
但接收者显示:
6A C3A8 05 01 00 01 C399 C39C 0A 09
知道如何保持 2 个字节吗?或者也许我的代码错了,尤其是。对于nodejs?
*更新了脚本。 我对 nodejs 有点陌生,我想看看 nodejs 提供什么非阻塞事件,因为在“忙碌”的日子里我有一些丢失的数据。 使用 binascii.(un)hexlify 和 PHP mbstring (un)pack(用于 web 视图)使脚本适用于 python。
期待:
6A E8 05 01 00 01 D9 DC 0A 09
【问题讨论】:
-
你为什么需要:"String.fromCharCode" 如果你已经在使用:".toString(16)" 那么你已经有了一个字符串。
-
1) 尝试在节点解释器中输入
0x6a看看会发生什么,注意它与"0x6a"有何不同。 2)String.fromCharCode的参数非常奇怪。 3) 另外,不要将for in与数组一起使用。 -
这是为了交流。我需要翻译十六进制字符串传入消息,创建响应消息,将响应消息也作为十六进制字符串发送回来。所以我需要 String.fromCharCode 并且很困惑为什么它被称为超级奇怪。感谢 {for in} 的提示;)
标签: javascript node.js hex