Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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
Java 理解解析二进制协议(数据类型之间的额外字节)_Java_Arrays_Parsing_Binary_Protocols - Fatal编程技术网

Java 理解解析二进制协议(数据类型之间的额外字节)

Java 理解解析二进制协议(数据类型之间的额外字节),java,arrays,parsing,binary,protocols,Java,Arrays,Parsing,Binary,Protocols,我需要别人的帮助。我有一个二进制协议,我正在尝试解析它(字节数组)。一切都很好,但有时数据类型之间会有额外的字节。为了正确解析,我必须跳过这些字节。有人能解释这些额外字节的原因吗 我有这样的字节数组: 3 0 0 0 0 0 0 0 0 0 0 0 0 106 -8 64 我先解析前4个字节(它的3个整数),然后跳过4个字节(它是什么?),然后解析接下来的8个字节(它的10000.0个整数)。所以为了正确解析,我需要跳过这4个字节,原因是什么???我会说它是为了对齐而填充的。我的猜测是,协议假

我需要别人的帮助。我有一个二进制协议,我正在尝试解析它(字节数组)。一切都很好,但有时数据类型之间会有额外的字节。为了正确解析,我必须跳过这些字节。有人能解释这些额外字节的原因吗

我有这样的字节数组:

3
0
0
0
0
0
0
0
0
0
0
0
0
106
-8
64

我先解析前4个字节(它的3个整数),然后跳过4个字节(它是什么?),然后解析接下来的8个字节(它的10000.0个整数)。所以为了正确解析,我需要跳过这4个字节,原因是什么???

我会说它是为了对齐而填充的。我的猜测是,协议假定8字节的初始缓冲区对齐。第一个整数消耗前4个字节,然后它需要跳过额外的4个字节,以允许8个字节与您的浮点数对齐(我猜是8个字节的两倍)。

在没有看到您的输入或不知道您正在解析的数据类型的情况下,恐怕这几乎不可能回答。您需要更具体一点。哪个二进制协议?任何给定协议中都可能存在“未使用”字节的原因有很多。保留字节(用于将来的扩展)、校验和(不应忽略!)、表示未使用某些选项的标记、@Ben我已更新了我的帖子您需要更好地指定它——正如@JoachimSauer所指出的,数据可以用于多种用途。如果这是通过编写本机数据类型生成的二进制“协议”,那么我希望开始时的数字(整数)是以“little endian”形式编写的,它们是4字节或8字节的数量。(零可能不是数字之间的“额外字节”。更可能的是,它们是数字的一部分!)但如果不看发出这些字节的代码,我们实际上只是在猜测。