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

来自charcode的Javascript十六进制字符串,javascript,node.js,hex,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) ); } 你知道怎么保持2个字节吗?或者我的代码错了,尤其是nodejs *更新了脚本。 我对nod

十六进制字符串:

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) );
}
你知道怎么保持2个字节吗?或者我的代码错了,尤其是nodejs

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

期望:

6A E8 05 01 00 01 D9 DC 0A 09

即使您正在代码中编写
0x6A
,JavaScript也会自动将其理解为其值106。它已经是一个数字,因此
parseInt()
不会对它做任何操作,可以将其删除

您可能只想这样做:

var str = [0x6A,0xE8...];
var byte = String.fromCharCode.apply(null,str);

如果我再次解码,你的代码似乎对我有用。 但在JavaScript中,在对象上使用for()循环时要小心。它还迭代对象的属性

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);
var str=[0x6A、0xE8、0x05、0x01、0x00、0x01、0xD9、0xDC、0x0A、0x09];
字节='';
对于(变量i=0;i对于(var i=0;OP发布的代码中没有对象。您需要小心使用正常
for
循环与实际对象。
for in
循环与对象完美匹配。正常
for
循环与数组完美匹配。但您的解决方案使用正确的
for
循环来实现此目的,我如何管理它既然python和php脚本之间没有问题,那么向后兼容性就不存在问题了。如果您已经在使用:“.toString(16)”,那么为什么需要“String.fromCharCode”,那么您已经得到了一个字符串。1)尝试在节点解释器中键入
0x6a
,看看会发生什么,注意它与
“0x6a”
.2)的区别
String.fromCharCode
的参数非常奇怪。3) 另外,不要在数组中使用
for in
。这是为了通信目的。我需要翻译hexstring传入消息,创建响应消息,并将响应消息作为hexstring发送回。所以我需要String.fromCharCode,很难理解为什么它被称为超级奇怪。感谢您提供有关{for in};)的提示有时读作“0x6A”(字符串)。我只是想确保它被解析为一个十六进制字符串
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);