我有一个规范,它告诉我们前 4 个字节指的是特定值,接下来的 8 个字节指的是 int,后面的 32 位表示特定的数据类型。 在java中读取此类数据的最佳方法是什么?有没有任何标准方法或者我只需要通过移动相应位置的偏移来读取它
最佳答案
如果您确实需要在 Java 中执行此操作,最好的选择是创建一个简单的 DTO具有自定义序列化。根据您的协议(protocol)格式定义它的字段,并让它从字节流中读取自身。类似于:
public class ProtocolDTO implements Serializiable {
private int specificValue;
private long anInt;
private int particularDataType;
// Constructors, Accessors
private void readObject(ObjectInputStream in)
throws IOException, ClassNotFoundException {
specificValue = in.readInt();
anInt = in.readLong();
particularDataType = in.readInt();
}
}
直接从这样的协议(protocol)流读取时要小心字节序。此外,您可能需要声明可序列化的子类型,具体取决于您的“特定数据类型”的实际情况。
关于java - 使用java中的规范解码二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076937/