1,用byte数组接收,因为unsigned char范围是0-255,byte是-128-127,所有用byte类型数组接收后将byte转为int类型接收
public void fun(){
try {
//创建接收方的套接字,监听端口号
DatagramSocket getSocket = new DatagramSocket(8002);
while(true){
//确定接收的数据报文的长度,来建立缓冲区
byte[] buf = new byte[36];
//创建接收类型的数据包,数据先储存在缓冲区
DatagramPacket getPacket = new DatagramPacket(buf,buf.length);
//通过套接字接收数据
getSocket.receive(getPacket);
//解析接收到到16机制数据
byte[] bytes = getPacket.getData();
System.out.println(Arrays.toString(bytes));
int[] bytes1 = new int[bytes.length];
for (int i =0;i<bytes.length-1;i++){
bytes1[i] = bytes[i]&0xff; //按位与,将signed类型转化为int的数字。因为Java中没有
}
System.out.println(Arrays.toString(bytes1));
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
2,再将int类型转化为十六进制。此处查看上节发布文章