相关疑难解决方法(0)

如何解析/编码二进制消息格式?

我需要解析并编码为Java中的传统二进制消息格式.我首先使用DataOutputStream来读取/写入基本类型,但我遇到的问题是消息格式与字节偏移不完全对齐并包括位标志.

例如,我必须处理这样的消息:

+----------+---+---+----------+---------+--------------+
+uint32    +b   +b + uint32   +4bit enum+32 byte string+
+----------+---+---+----------+---------+--------------+
Run Code Online (Sandbox Code Playgroud)

其中(b)是一位标志.问题是java原语类型没有与字节边界对齐,因此我无法使用DataOutputStream对此进行编码,因为我可以写入的最低级别类型是一个字节.

是否有任何库,标准或第三方处理任意位级消息格式?

编辑:感谢@Software Monkey强迫我更仔细地查看我的规范.我正在使用的规范确实在字节边界上对齐,因此DataOutputStream是合适的.鉴于我原来的问题,虽然我会选择@emboss提出的解决方案.

编辑:虽然发现此问题的消息格式是在字节边界上,但我遇到了另一种适用于原始问题的消息格式.这种格式定义了一个6位字符映射,其中每个字符实际上只占用6位,而不是整个字节,因此字符串不在字节边界上对齐.我发现了几个解决这个问题的二进制输出流.像这样:http://introcs.cs.princeton.edu/java/stdlib/BinaryOut.java.html

java binaryfiles

7
推荐指数
2
解决办法
8371
查看次数

标签 统计

binaryfiles ×1

java ×1