在客户端的javascript中将小端二进制转换为int(wscript)

时间:2017-05-25 16:33:41

标签: javascript jscript

我有一个二进制数据数组,它是使用服务器上的节点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脚本环境执行的。

1 个答案:

答案 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);