Hex Editor 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 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, 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 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, 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'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's data processing engine, most Hex Editor 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 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 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. 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 and selection.

Native Support of x64 Platform

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

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

Programming Access

Hex Editor has a documented programming interface that can be used by external code to access all powerful features of the Hex Editor. This interface is implemented by an ActiveX component. When an external code uses functions provided by the component, the Hex Editor'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.

See Also