java - 解析二进制协议的理解(数据类型之间的额外字节)
问题描述
我需要别人的帮助。我有一个二进制协议,我正在尝试解析它(字节数组)。一切都很好,但有时数据类型之间会有额外的字节。而且我必须跳过这些字节才能正确解析。谁能解释这些额外字节的原因?
我有这样的字节数组:
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 个字节)。
推荐阅读
- android - Xml drawable 放大时像素化
- common-lisp - 从泛型函数中删除一个方法
- sql - SQL:如何选择最早日期
- python - 如何强制 sklearn CountVectorizer 不删除特殊字符(即 #、@、、$ 或 %)
- powershell - 通过嵌套的 Invoke-Expression 传递字符串数组
- typescript - ReferenceError:未定义 MediaStream - 在带有 Jest 的 unitTest 中
- javascript - Jquery在嵌套循环中显示项目
- nsdictionary - 陷阱 valueForKeyPath 的麻烦:没有有效的路径
- html - 如果不推荐使用 contextmenu 如何替换它?
- azure - Azure 函数 - 以编程方式检查其完成