java - 反/序列化二进制数据

标签 java serialization binary jackson ormlite

我目前正在对一个 mmorpg 的二进制网络协议(protocol)进行逆向工程。 我正在用 java 实现该协议(protocol)。

对于每个数据包类型, 我将创建一个表示二进制数据的类。

例如,聊天数据包(“asd”)

header = 0c75
03 00 61 73 64 00   . . a s d .

java代码:

public class Chat {
  private short length;
  private String msg;
}

是否有一个库可以将字节数组直接反序列化为对象。基本上类似于 Jackson 或 OrmLite 的二进制数据。

谁知道有没有可以使用的库? 我已经在这里和谷歌上搜索过,但没有找到我要找的东西。 我什至开始编写自己的序列化程序。

最佳答案

每个序列化库(据我所知?)都定义了自己的二进制格式 - 因此二进制表示完全由类/idl 文件确定,不能进行定制以匹配自定义协议(protocol)。常见的二进制格式:

如果您进行逆向工程的协议(protocol)碰巧不是一个常见的协议(protocol)(也许他们在内部使用 proto?)那么您唯一的选择是实现 Serializable/Externalizable你自己,或者带进来 kryo并定义您自己的自定义(反)序列化器 - 无论哪种方式,您都将自己编写 Object <--> byte[]/stream/buffer 转换逻辑。

关于java - 反/序列化二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37310089/

相关文章:

java - Feign Client GET 请求,从微服务中抛出 "Method Not Allowed: Request method ' POST' not supported"

vb.net - 在 VB.Net 中序列化 ObservableCollection(of T)

c - 长数组的序列化(在 C 中)

Java NotSerializedException :

mysql将varchar二进制表示字段转为二进制用bit_count做汉明距离计算

c - 十进制到 IEEE 754 使用 C 的单精度 IEEE 754 代码

bash - 如何在 bash 中进行二进制加法

java - 为什么 urlconnection 没有读取完整的响应

java - 如何将String[](数组)存储在String[][](数组的数组)中

java - 配置 Ant 使用 JUnit 4