需要将UDP数据包中的字节数组/二进制消息转换为java中的多个字段
我有一个字节数组,由一个10字节的消息组成。我知道前2个字节包含一个要提取为字符串的id。此id的一个示例是:2001。剩下的字节由我知道的其他字段组成 我从UDP消息接收二进制数据,在尝试使用下面的方法转换二进制/字节数组后,我的打印仍然记录二进制消息 我使用以下代码转换二进制UDP消息:需要将UDP数据包中的字节数组/二进制消息转换为java中的多个字段,java,bytearray,ascii,datagram,Java,Bytearray,Ascii,Datagram,我有一个字节数组,由一个10字节的消息组成。我知道前2个字节包含一个要提取为字符串的id。此id的一个示例是:2001。剩下的字节由我知道的其他字段组成 我从UDP消息接收二进制数据,在尝试使用下面的方法转换二进制/字节数组后,我的打印仍然记录二进制消息 我使用以下代码转换二进制UDP消息: DatagramPacket rcvMsg = receivepacket.getData(); String id = new String(rcvMsg, 0, 2, "US-ASCII"); S
DatagramPacket rcvMsg = receivepacket.getData();
String id = new String(rcvMsg, 0, 2, "US-ASCII");
System.out.println("id ----- : "+id);
如何从二进制数据报消息中打印2001?将字节数组转换为字符串,然后根据需要使用子字符串将其切分 对于c#中的代码,这里有一个类似的问题(与java没有太大区别),它是否有帮助: 此处根据java示例更新:
将字节数组转换为字符串,然后根据需要使用子字符串将其切分 对于c#中的代码,这里有一个类似的问题(与java没有太大区别),它是否有帮助: 此处根据java示例更新:
您希望以什么格式恢复前2个字节?它们是表示整数还是编码字符串
因为,否则,您可以将数组封装到BytErayInPixStand中,然后将其封装成DATAN,然后使用DeaNeToStudioStudio方法读取消息,
DataInput input = new DataInputStream(new ByteArrayInputStream(myArray));
String id = String.valueOf(input.readShort())
您甚至可以继续使用这个对象来读取数组中编码的其余字段,如果它们对应于支持的Java数据类型(即byte、short、int、String等)
现在,如果前两个字节仅表示ASCII字符(或任何其他编码),则可以使用以下字符串构造函数之一:
String id = new String(myBytes, 0, 2, "US-ASCII");
您希望以什么格式恢复前2个字节?它们是表示整数还是编码字符串
因为,否则,您可以将数组封装到BytErayInPixStand中,然后将其封装成DATAN,然后使用DeaNeToStudioStudio方法读取消息,
DataInput input = new DataInputStream(new ByteArrayInputStream(myArray));
String id = String.valueOf(input.readShort())
您甚至可以继续使用这个对象来读取数组中编码的其余字段,如果它们对应于支持的Java数据类型(即byte、short、int、String等)
现在,如果前两个字节仅表示ASCII字符(或任何其他编码),则可以使用以下字符串构造函数之一:
String id = new String(myBytes, 0, 2, "US-ASCII");
与其他投票率较高的问题相比,这确实有效。与其他投票率较高的问题相比,这确实有效。