如何在java中处理字节序列?

Posted

技术标签:

【中文标题】如何在java中处理字节序列?【英文标题】:How to process sequence of bytes in java? 【发布时间】:2013-11-11 16:49:55 【问题描述】:

我有字节流,当我得到特定的标头时,我需要将这些字节形成一个帧。 示例:

Header:    ABC  
Source:    DFDFDFDF'ABC'IEJENFAREABCOEKRERIERE

如果检测到 ABC,则字符串中的其余字节 'IE' 和字符串中的 'JEN' 和字符串中的 'FARE' 并再次检测到 ABC,因此字符串中的 'OE'... 同样我的必须处理字节流。

有什么有效的方法来处理它吗?

【问题讨论】:

【参考方案1】:

如果您有超过 1 个标头,我建议使用 Finite State Machines。但是,如果只有一个,简单的模式匹配就足够了。

您所要做的就是从先前创建的帧开始存储字符。每当你读到一个字符时,更新你的状态。如果找到了标题的结尾,那么您就得到了框架。如果没有,您可以将字符附加到不完整的框架中。

【讨论】:

以上是关于如何在java中处理字节序列?的主要内容,如果未能解决你的问题,请参考以下文章

Java序列化机制和原理

Java序列化与反序列化学习:序列化机制与原理

如何检测非法 UTF-8 字节序列以在 java 输入流中替换它们?

如何在 C++ 中序列化对象?

Java实现对象的序列化

如何修复 1 字节 UTF-8 序列的无效字节 1