十六进制字符串:
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 View )获取适用于 python 的脚本。
期待:
6A E8 05 01 00 01 D9 DC 0A 09
最佳答案
如果我再次解码,您的代码似乎对我有用。 尽管 for() 循环遍历 Javacript 中的对象,但要小心。这也会迭代对象的属性。
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) );
}
var hexarrayout = [];
for (var i=0; i<byte.length; i++) {
hexarrayout.push(byte.charCodeAt(i).toString(16));
}
alert(hexarrayout);
关于 http://jsfiddle.net/ycG4n/ 的示例
您的问题看起来很像 utf8<=>iso-.../ascii/etc 发送到接收方时的转换问题,其中一些 1 字节字符串字符被转换为 2 字节字符。由于 UTF-8 的部分向后兼容性,您的一些十六进制值将保留 1 个字节。
关于来自 CharCode 的 Javascript 十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941978/