我有一个二进制数据数组,它是使用服务器上的节点js转换的:
buffer.toString('hex');
在buffer
的开头添加了2个整数,如下所示:
buffer.WriteInt32LE(index,0);
buffer.WriteInt32LE(id,0);
最后我收到了这样的字符串:
var str = "1100000050000000fd2595200380024"
我需要使用Windows脚本环境(javascript + ActiveX)
在客户端上解析此字符串如何转换前两个值' 11000000'和' 50000000'从小端字符串到整数,其余字符串到十六进制代码表示的二进制字节?在浏览器中,ArrayBuffer是可用的,但js是从windows脚本环境执行的。
答案 0 :(得分:1)
var str = "1100000050000000fd25952003800245";
var int1 = parseInt(str.substring(0,7));
var int2 = parseInt(str.substring(8,15));
alert(int1);
alert(int2);
会得到整数..
str的其余部分有7个字节......还有一个半字节... fd 25 95 20 03 80 02 4
假设您缺少一个半字节,使其为8个字节......
var hex = [str.substring(16,str.length).length/2];
这将为您提供8个位置的字节数组
var hex = [];
hex.push(str2.substring(0,2));
hex.push(str2.substring(2,4));
hex.push(str2.substring(4,6));
hex.push(str2.substring(6,8));
hex.push(str2.substring(8,10));
hex.push(str2.substring(10,12));
hex.push(str2.substring(12,14));
hex.push(str2.substring(14,16));
alert(hex);
只是用字符串中的字节填充数组,但你现在只需要转换它们:)
fullcode:
var str = "1100000050000000fd25952003800245";
var int1 = parseInt(str.substring(0,7));
var int2 = parseInt(str.substring(8,15));
var str2 = str.substring(16,str.length);
alert(int1);
alert(int2);
var hex = [];
hex.push(str2.substring(0,2));
hex.push(str2.substring(2,4));
hex.push(str2.substring(4,6));
hex.push(str2.substring(6,8));
hex.push(str2.substring(8,10));
hex.push(str2.substring(10,12));
hex.push(str2.substring(12,14));
hex.push(str2.substring(14,16));
alert(hex);