繁体   English   中英

Javascript十六进制字符串fromCharCode

[英]Javascript hex string fromCharCode

十六进制字符串:

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获得了适用于python的脚本。(un)hexlify和PHP mbstring(un)pack(用于Web视图)。

期待:

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转换问题,其中一些1byte字符串字符转换为2byte字符。 由于UTF-8具有部分向后兼容性,因此您的某些十六进制值将保留1个字节。

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

您可能只想这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM