Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要将UDP数据包中的字节数组/二进制消息转换为java中的多个字段_Java_Bytearray_Ascii_Datagram - Fatal编程技术网

需要将UDP数据包中的字节数组/二进制消息转换为java中的多个字段

需要将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

我有一个字节数组,由一个10字节的消息组成。我知道前2个字节包含一个要提取为字符串的id。此id的一个示例是:2001。剩下的字节由我知道的其他字段组成

我从UDP消息接收二进制数据,在尝试使用下面的方法转换二进制/字节数组后,我的打印仍然记录二进制消息

我使用以下代码转换二进制UDP消息:

 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");

与其他投票率较高的问题相比,这确实有效。与其他投票率较高的问题相比,这确实有效。