java - 使用java中的规范解码二进制数据

标签 java

我有一个规范,它告诉我们前 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/

相关文章:

java - 为什么 DecimalFormat 允许字符作为后缀?

java - 如何以编程方式实例化一个新的 JSONObject,并在其名称中添加增量值

java - Spring Servlet 从 *.html 映射到 SO 类型映射

java - 如果不存在则插入到数据库

java - 从 List<MyData> 列出 List<String> 中的所有名称的最佳方法是什么

java - 如何从JSP中的文本字段获取自定义值?

java - 从一项 Activity 转移到另一项 Activity 时如何保留 editText 输入?

java - 需要帮助改进我的正则表达式

java - 如果它在 jar 文件中,则基于 Spring Annotation 的 Controller 不起作用

java - 什么是 Java2D 处理器线程?