首页 > 解决方案 > 解析二进制协议的理解(数据类型之间的额外字节)

问题描述

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

我有这样的字节数组:

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

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

标签: javaarraysparsingbinaryprotocols

解决方案


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


推荐阅读