l***@vip.sina.com
l***@vip.sina.com
  • 发布:2016-04-09 00:27
  • 更新:2016-04-09 00:27
  • 阅读:1323

DatagramPacket打包负数处理错误

分类:Native.js
 document.addEventListener( "plusready", function(){  
        console.log("addEventListener");        
        DatagramPacket = plus.android.importClass("java.net.DatagramPacket");  
        DatagramSocket = plus.android.importClass("java.net.DatagramSocket");  
        InetAddress = plus.android.importClass("java.net.InetAddress");  

        sensor_socket = new DatagramSocket(9999);  
        sensor_socket.setSoTimeout(1); // 设置接收数据时阻塞的最长时间  

        try {  
            var serverAddress = "Server not found";  
            var dataOrg = [11,22,-11,-80];  
            console.log(dataOrg);  
            var data = Array2Bytes(dataOrg);  
            console.log(data);  
            var port = 9999;  
            var iAdd = new InetAddress();  
            var dp = new DatagramPacket(data, data.length,iAdd.getByName("192.168.56.1"), port);  
            console.log(dp.getData());  
            sensor_socket.send(dp);  
        }catch(err){  
         console.log(err.message);            
        }           

    }, false );       

function Array2Bytes(arr){
var ch, st, re = [];
for (var i = 0; i < arr.length; i++ ) {
ch = arr[i]; // get char
re = re.concat( ch & 0xFF );
//console.log(re);
}
// return an array of bytes
return re;
}

打印信息如下:
11,22,-11,-80 at js/sensor_udp.js:66
11,22,245,176 at js/sensor_udp.js:68
11,22,0,0 at js/sensor_udp.js:74

负数(或者说大于128)时,不能正确打包。
java原接口可以正确处理。

2016-04-09 00:27 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复