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字节的数量。(零可能不是数字之间的“额外字节”。更可能的是,它们是数字的一部分!)但如果不看发出这些字节的代码,我们实际上只是在猜测。