Есть ли какие-либо фреймворки Java для анализа двоичных файлов?

Решение, которое я нашел, загружало https://dl-ssl.google.com/android/repository/platform-tools_r25.0.1-windows.zip

17
задан Peter Lawrey 10 April 2016 в 13:37
поделиться

7 ответов

попробуйте preon

11
ответ дан 30 November 2019 в 12:14
поделиться

Я использовал DataInputStream для чтения двоичных файлов, и я пишу правила в Java.;) Двоичные файлы могут иметь примерно любой формат, таким образом, нет никакого общего правила для того, как считать их.

Платформы не всегда делают вещи более простыми. В Вашем случае файл описания длиннее, чем код, чтобы просто считать данные с помощью DataInputStream.

public static void parse(DataInput in) throws IOException {
//        file:
//          header: FIXED("MAGIC")
    String header = readAsString(in, 5);
    assert header.equals("MAGIC");
//          body: content(10)
// ?? not sure what this means
//        content:
    for(int i=0;i<10;i++) {
//          value1: BYTE
        byte value1 = in.readByte();
//          value2: LONG
        long value2 = in.readLong();
//          value3: STRING(10)
        String value3 = readAsString(in, 10);
    }
}

public static String readAsString(DataInput in, int len) throws IOException {
    byte[] bytes = new byte[len];
    in.readFully(bytes);
    return new String(bytes);
}

, Если Вы хотите иметь конфигурационный файл, Вы могли бы использовать Конфигурационный файл Java. http://www.google.co.uk/search?q=java+configuration+file

10
ответ дан 30 November 2019 в 12:14
поделиться
3
ответ дан 30 November 2019 в 12:14
поделиться

Синтаксический анализатор combinator библиотека является опцией. JParsec хорошо работает, однако это могло быть медленно.

1
ответ дан 30 November 2019 в 12:14
поделиться

Можно проанализировать двоичные файлы с синтаксическими анализаторами как JavaCC. Здесь можно найти простой пример. Вероятно, это немного более трудно, чем парсинг текстовых файлов.

-2
ответ дан 30 November 2019 в 12:14
поделиться

Вы имеете изучающий мир синтаксических анализаторов. Хороший синтаксический анализатор является yacc, и может быть порт его для Java.

-3
ответ дан 30 November 2019 в 12:14
поделиться

Использование Preon :

public class File {

  @BoundString(match="MAGIC")
  private String header;

  @BoundList(size="10", type=Body.class)
  private List<Body> body;

  private static class Body {

    @Bound
    byte value1;

    @Bound
    long value2;

    @BoundString(size="10")
    String value3;

  }


}

Данные декодирования:

Codec<File> codec = Codecs.create(File.class);
File file = codecs.decode(codec, buffer);

Сообщите мне, если у вас возникнут проблемы.

12
ответ дан 30 November 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: