来自CharCode的Javascript十六进制字符串

lon*_*orp 3 javascript hex node.js

十六进制字符串:

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) );
}
Run Code Online (Sandbox Code Playgroud)

但接收器显示:

6A C3A8 05 01 00 01 C399 C39C 0A 09
Run Code Online (Sandbox Code Playgroud)

知道如何保持 2 个字节吗?或者也许我的代码错误,尤其是。对于nodejs?

*更新了脚本。我对 NodeJS 有点陌生,我喜欢看看 NodeJS 提供了哪些非阻塞事件,因为在“忙碌”的日子里我丢失了一些数据。使用 binascii.(un)hexlify 和 PHP mbstring (un)pack (用于 Web 视图)让脚本适用于 python。

期待:

6A E8 05 01 00 01 D9 DC 0A 09
Run Code Online (Sandbox Code Playgroud)

Tyr*_*ron 5

如果我再次解码,你的代码似乎对我有用。 \n尽管 for() 在 Javacript 中的对象上循环,但要小心。它还会迭代对象的属性。

\n\n
var str = [0x6A, 0xE8, 0x05, 0x01, 0x00, 0x01, 0xD9, 0xDC, 0x0A, 0x09];\nbyte = \'\';\nfor (var i=0; i < str.length; i++) {\n    byte += String.fromCharCode( parseInt(str[i], 16).toString(16) );\n}\n\nvar hexarrayout = [];\nfor (var i=0; i<byte.length; i++) {\n    hexarrayout.push(byte.charCodeAt(i).toString(16));\n}\n\nalert(hexarrayout);\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\x8b\nhttp: //jsfiddle.net/ycG4n/上的示例

\n\n

当发送到接收器时,您的问题看起来非常像 utf8<=>iso-.../ascii/etc 转换问题,其中一些 1 字节字符串字符被转换为 2 字节字符。由于 UTF-8 的部分向后兼容性,某些十六进制值将保留 1 字节。

\n