我找到了获取数组的方法,每个组件的值可以在0到255之间。 我正在使用Android Studio,我从套接字接收数据。以下是我的代码。
try {
InetAddress IpAddress = InetAddress.getByName(remoteName);
myUpd_socket = new DatagramSocket(remotePort);
// Send connect message
String str = "connect request";
send_data = str.getBytes();
DatagramPacket send_packet = new DatagramPacket(send_data,str.length(), IpAddress, remotePort);
myUpd_socket.send(send_packet);
byte[] dataArray = new byte[1024];
DatagramPacket udp_packet = new DatagramPacket(dataArray,dataArray.length);
while (true) {
myUpd_socket.receive(udp_packet);
byte[] buff = new byte[udp_packet.getLength()];
System.arraycopy(dataArray,0,buff,0,buff.length);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我需要从发射器获得相同的数据。原始数据没有负值。但是当我检查收到的数据时,buff有很多负值。我在这里搞错了。 我是Java和android的新手。所以,如果有人能帮助我,我真的很感激。 感谢。
答案 0 :(得分:0)
为什么不使用:
<强> RECEIVE 强>
Socket socket = ...
DataInputStream in = new DataInputStream(socket.getInputStream());
int length = in.readInt(); // read length of incoming message
if(length>0) {
byte[] message = new byte[length];
in.readFully(message, 0, message.length); // read the message
}
发送强>
byte[] message = ...
Socket socket = ...
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeInt(message.length); // write length of the message
out.write(message); // write the message
答案 1 :(得分:0)
byte
是用Java签名的。如果您想要无符号值(作为int
),请使用:byteValue & 0xFF
。