Hex Editor - Binary File Editing Software for Windows
Docs

Data Processing Engine

Hex Editor Neo implements the unique data processing engine which endows it with a number of interesting and powerful features.

The main characteristics of the data engine include:

Operation History

Hex Editor Neo implements an unlimited operation history with branches and immediate switching between operations. Every command that modifies the state of the document (overwrites existing data, inserts new data, deletes document's data or changes the size of the document) creates a new operation and adds it to the operation history.

The amount of RAM required to store operation's data is minimal and is much less than corresponding memory amounts required by most competitive products. In addition, operation's data is automatically compressed and moved to disc when not required. It then loaded and decompressed on-demand.

Branches feature allows you to create several operation sequences that “grow” from a common "root" operation and represent different variants of the document. All such sequences are “equal in rights”: you can switch between them at any time, copy data from one branch to the Clipboard in order to paste it into another branch and so on.

Switching between operations is performed immediately.

The entire operation history can be saved to a file and later loaded for the same document. Imagine you begin working with a file. You open it in the Hex Editor Neo, perform several operations on it, create branches and so on… Then you save the operation history to a file and close the edited file without saving changes. Now you have an option of opening the same file and loading saved operation history to continue your work from the same point.

The Operation History section in this documentation provides you with a detailed description.

Multiple Selection

All Hex Editor Neo commands are capable working with a multiple selection. A multiple selection is a collection of contiguous ranges. A multiple selection may arise as a result of user actions, or as a result of the Find All command. It can also be saved to a file and later loaded from it.

Algorithms, implemented in the Hex Editor Neo, provide an extremely efficient way to store and process multiple selections. This makes, for example, executing the Find All command for a several gigabytes-long file quite an ordinary operation that will not “eat up” all available virtual memory and disk space, as it happens in most competitive binary file editors.

The “native” support of multiple selections by every Hex Editor Neo's command, starting from Fill and Clipboard to Statistics makes this instrument a valuable and helpful editing tool in everyday's work.

The Multiple Selection section provides in-depth description of this feature.

Operation Efficiency

Due to unique characteristics of the Hex Editor Neo's data processing engine, most Hex Editor Neo commands finish in constant-time. In other words, they have a constant-time complexity. Constant-time complexity means that a command operates in approximately constant time and this time does not depend on latent or obvious command's complexity. For example, Insert File command has a constant-time complexity. This means, that inserting a 1 KB file takes exactly the same time as inserting a 1 GB file.

Other Hex Editor Neo commands finish in linear-time. In other words, they have a linear-time complexity. The time required to process such command usually linearly depends on the file's size, selection's complexity or some other factor. None of Hex Editor Neo commands has worse than linear-time complexity.

Most linear-time commands depend on the selection's complexity, that is, number of ranges in a selection. That is, for single-range selections these commands have a constant-time complexity. For example, the Fill command has a linear-time complexity, depending on selection's complexity. That is, if the command is used to fill a single-range selection, it operates in constant-time: filling 1 KB file takes exactly the same time as filling a 1 GB file. Filling a selection that has 20 million ranges will take 20 times longer than filling a selection that has 1 million ranges.

This documentation always states the command's complexity when it describes a given command. When linear-time complexity is mentioned, a dependent factor is given.

Multi-Document & Multi-Editor Environment

Multiple documents (files) may be opened for editing in the Hex Editor Neo. They all have their own operation history, which are not related with each other. Multiple editor windows may be opened for each document, each of which also has its own state: view type, cursor position, selection and encoding.

Encodings Support

Each editor window has two panes: code pane and text pane (the panes are configurable). Text pane is displayed when the editor is in BYTE or WORD grouping mode. For the latter, text pane automatically displays UNICODE (UTF-16-encoded) characters. For the first mode, you can select one of over 130 supported encodings, including UTF-8.

After that, you get a full support for the selected encoding - the editor will correctly parse and display encoded characters and automatically encode characters pressed on the keyboard or pasted from the Clipboard.

Native Support of x64 Platform

Hex Editor Neo's data processing engine natively supports the x64 platform and utilizes all features provided by it, including extended register list, larger address space, new processor commands and full support for SSE2 commands.

Hex Editor Neo's installer automatically installs correct binaries (installation package contains compiled binaries for x86 and x64 platforms).

Parallel Operation

Starting from version 5.01, Hex Editor Neo utilizes multiple processors or cores when it performs complex lengthy operations. It also allows running multiple lengthy operations on several opened documents in parallel.

Programming Access

Hex Editor Neo has a documented programming interface that can be used by external code to access all powerful features of the Hex Editor Neo. This interface is implemented by an ActiveX component. When an external code uses functions provided by the component, the Hex Editor Neo's user interface is not required and not displayed.

The Scripting section contains in-depth description of the programming interface. Interface overview and detailed reference with a lot of sample codes in different programming languages, including C++, JavaScript and C#, are provided.