Java序列化对象的二进制数据

mingming1993 2018-01-25 05:32:07
最近在做用友erp的数据审计,求解为何erp系统所传输的序列化对象不能直接反序列化?我网上看了文档,一般来讲一个序列化的对象二进制数据开头为0xAC 0xED 0x00 0x05,后续便是类的定义开头,开头应该是以0x73开始。可是erp的数据开头是aced0005没错,下一个数据字节是0x77,因此无法直接反序列化。
不知为何不是标准的序列化格式。
求解。
序列化格式的参考文档是这个:
https://docs.oracle.com/javase/8/docs/platform/serialization/spec/protocol.html#a10258
...全文
595 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingming1993 2018-02-06
  • 打赏
  • 举报
回复
引用 3 楼 u011619071 的回复:
[quote=引用 2 楼 mingming1993 的回复:] [quote=引用 1 楼 u011619071 的回复:] 序列化只是一种传输的规定方式,你自己也可以二进制数组进行操作,只要能反着解回来就可以了;
java序列化反序列化试用writeobject和readobject,如果不是按照标准格式来,就不能用这两个函数进行正反向操作了吧[/quote] 为什么不试试,在写的时候,设置几位是你随机写进去的byte,读取的时候在省略写入的那几位;[/quote] 现在已经可以了,特来结贴。 用友自己实现了一套java库,甚至包括java.lang和java.io。通过学习它已有的代码已经可以正确反序列化了。 再次感谢
X元素 2018-01-29
  • 打赏
  • 举报
回复
引用 2 楼 mingming1993 的回复:
[quote=引用 1 楼 u011619071 的回复:] 序列化只是一种传输的规定方式,你自己也可以二进制数组进行操作,只要能反着解回来就可以了;
java序列化反序列化试用writeobject和readobject,如果不是按照标准格式来,就不能用这两个函数进行正反向操作了吧[/quote] 为什么不试试,在写的时候,设置几位是你随机写进去的byte,读取的时候在省略写入的那几位;
mingming1993 2018-01-26
  • 打赏
  • 举报
回复
引用 1 楼 u011619071 的回复:
序列化只是一种传输的规定方式,你自己也可以二进制数组进行操作,只要能反着解回来就可以了;
java序列化反序列化试用writeobject和readobject,如果不是按照标准格式来,就不能用这两个函数进行正反向操作了吧
X元素 2018-01-25
  • 打赏
  • 举报
回复
序列化只是一种传输的规定方式,你自己也可以二进制数组进行操作,只要能反着解回来就可以了;
相关推荐
发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2018-01-25 05:32
社区公告
暂无公告