【发布时间】:2016-06-15 15:07:31
【问题描述】:
我需要通过 chrome.sockets.udp 插件发送一个 ArrayBuffer。
数据通过 Android ionic 应用程序发送到在计算机上运行的模拟器。
我需要发送以下字段:
var arrayBuffer = new ArrayBuffer(20);
var dv = new DataView(arrayBuffer,0);
console.log("ID=0 assign");
dv.setUint16(0,0);
console.log("SIZE=12 assign");
dv.setUint16(2,12);
console.log("CRC=0 assign");
dv.setUint16(4,0);
console.log("MSGcount assign");
dv.setUint16(6,0);
console.log("AppVersion assign");
dv.setUint32(8,0);
console.log("Port assign");
dv.setUint32(12,7602);
for (var i = 0; i <= 19; i++) {
console.log("byte number is " +i+ " " +dv.getInt8(i));
}
dv.setUint32(16,20000);
当我运行这段代码时,我得到以下结果:
byte number is 12 0
byte number is 13 0
byte number is 14 29
byte number is 15 -78
服务器应该得到下一个结果:
byte number is 12 78
byte number is 13 29
byte number is 14 0
byte number is 15 0
我应该如何在 dataView 中插入数字以按照服务器期望的顺序获取字节?
【问题讨论】:
-
实际上,服务器的预期结果应该是
byte number is 12 178。请记住,该数字设置为无符号,因此应将其检索为无符号。 -
我需要它是 78,正如服务器所期望的那样,我该怎么做?
-
要么将原始数字从
7602更改为7502,要么取服务器端第一个字节的绝对值。
标签: javascript google-chrome ionic-framework uint32 byte-shifting