JParser анализира двоични файлове работи просто

jParser улеснява четенето на структури от данни от двоични файлове с Javascript.

  • Веднъж опишете структурата, нейният анализ става автоматично.
  • Процесът на анализ на данни може да бъде разширен със самостоятелно написани функции. Това опростява анализирането на нетривиални файлове.
  • jParser работи както в браузъра, така и в NodeJS, защото работи на базата на jDataView.

  • Цели числа без знак:uint8, uint16, uint32
  • Подписано:int8, int16, int32
  • Дробни плаващи числа:float32, float64
  • Низове:char, string(len)
  • Масив:масив (тип, дължина)
  • Позиция:кажете, пропуснете (len), потърсете (pos), потърсете (pos, func)
Методи на Jparser:

    parse(value)- започва анализиране, може да се използва рекурсивно. Поведението зависи от типа на аргумента:

  • функция:извиква функция;
  • низ:дерефериране (стойността от структурата се взема от посоченото име);
  • масив:извикване на функция, чието име е първият елемент от масива, а следващите елементи служат като аргументи;
  • object:връща обект със същите имена на полета, но анализирани стойности.
  • tell()- връща текущата позиция (отместване) в анализирания файл.
  • skip(count)- преместване във файла (пропускане).
  • seek(position)— отидете до указаното отместване в анализирания файл.
  • seek(position, callback)- отидете до указаното отместване, изпълнете callback() там, след което се върнете към предишната позиция.
  • current— Текущият обект, който се анализира.Използвайте за достъп до резултатите, вече постигнати по време на анализа.
  • Конструктор jParser:

      нов jParser(данни, структура)

    • dataе jDataView с данните, които трябва да бъдат анализирани. Можете да подадете низ от байтове (String), можете да подадете ArrayBuffer, тези типове данни се преобразуват автоматично в jDataView.
    • structureе обект с описание на всички структури от данни.

    Нормална С структура

    Можете да описвате структури от данни. Това е Javascript обект, където полетата са имена на данни, а техните стойности са типове.

    Структурите могат да съдържат други структури. Използвайте името на структурата като низ, за ​​да препратите към нейното описание. Следният пример е част от структурата на файл, съдържащ модел за World of Warcraft:

    Ще ви бъде лесно да дефинирате нови елементарни типове. Можете да използвате съществуващи конструкции като обекти (float3в примера по-долу) или масиви (float4в примера). Ако искате да дефинирате по-сложен тип, винаги е възможно да дефинирате нова функция, която разчита на методаthis.parseза първично анализиране (hex32в следния пример):

    Ако размерът на масива не е известен предварително, тогава можете да поставите на негово място в структурата функция, която връща цяло число. В тази функция можете да използватеthis.currentза достъп до обекта, който в момента се анализира, и да прочетете неговите вече получени полета.

    Разширен анализ на данни

    Най-приятната характеристика на jParser е, че сложните алгоритми за обработка могат да бъдат изразени чрез функции в описанието на структурата на данните. Това ви позволява да анализирате сложни файлове, без да отделяте описанието на структурата от кода.неговите манипулатори.

    Начало на работа

    Осъществено от NodeJS

    Просто използвайтеnpm, за да инсталиратеjParser

    Поправих jQuery, за да гарантирам, че двоичните файлове се изтеглят в най-добрия възможен двоичен формат. Включете този коригиран jQuery код, както и jDataView и jParser -

    Предпазни мерки

    • Не започвайте име на поле с число в описанието на структурата на данните.
    • Не предефинирайте еднократно поле с дадено име, не поставяйте друго поле със същото име в същия обект.

    ICO анализ. Това е прост пример за анализиране на двоичен файл в двигателя NodeJS. Той показва как да решите много често срещани проблеми, които възникват при анализиране на двоични данни.

    • ico.jsе структурата на данните за jParser.
    • ico.json - резултатът от анализа.
    Разопаковач наTar. Това е прост пример за анализиране на двоичен файл в браузър.

    • tar.htmlе структура на jParser.
    World of Warcraft Model Renderer.Използва jParser за четене на двоичния файл на 3D модела, след което WebGL за изобразяването му.

    • m2.jsе структурата на jParser.
    • model.json - резултатът от анализа.
    двоични

    Вътрешни файлове на Diablo 3

    • convert.coffeeе структура за jParser. Още по-лесно е да напишете файловата структура с coffeescript.
    • Примери за обработени файлове:

    Hardcore conf в C++. Каним само професионалисти.