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

标签 javascript node.js hex

十六进制字符串:

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/

相关文章:

javascript - 从 iframe 中删除父窗口的 id

node.js - 安装 Node/运行 npm install 的问题

r - 在R中将十六进制转换为十进制

c++ - CPP 中的十六进制转换出现严重错误

assembly - gcc 汇编到十六进制

javascript - slickgrid 可调整大小不刷新行

javascript - 对于模型的路径 ""处的值 "_id"转换为 ObjectId 失败

javascript - 检测窗口大小调整以运行不同的属性

c++ - 在特定的 cmake 目标之前运行 npm 命令

node.js - 使用express删除 Mongoose 条目