Hex Workshop

Screen Shots
Features
Online Help
Export Samples
Version History
Awards & Reviews
Order Now

Get it from CNET Download.com!

Awards & Reviews


download3k.com: Your download source

softpedia.com: Free downloads encylopedia

fileaward.com: Best Software Downloads

downloadpipe.com: Downloads and Software Reviews

Hex Workshop v4.1

New Features

Array Lengths: Variable and Expressions

The Hex Workshop Structure Viewer now supports arrays of variable length. This new feature allows users to define the length of an array based on one of the structure’s own data elements. For example, it is common to find strings in binary format coded with integer length followed by the string content. The declaration below demonstrates how to define the length of an array:

    struct pstring
    {
        word length;         // Length of string
        char string[length]; // Actual characters
    };

Variable length arrays, defined using simple expressions, can be embedded within the definition of the length of an array. For example, to define a binary format that always allocates an even number of bytes per string, use the following variable length array definition:

    struct pstring2
    {
        word length;
        char string[length + (length % 2)];
    };

typedef Support

Users can now define their own data types for the Hex Workshop Structure Viewer. This feature is extremely useful when porting structures from existing source code. The example below defines a new signed int called “SINT”:

    typedef signed int SINT;

Enumeration support

The Hex Workshop Structure Viewer now supports enumerated types. Enumerated types allow users to create labels for unique numeric values. For example, a .zip compression file format reserves 2 bytes for a compression method. In the following example, the #pragma command instructs Hex Workshop to use 2 bytes for enumerations. Then, an enumeration declaration is used to define the possible compression types.

    #pragma enumsize(2)
    enum COMPRESSION_METHOD
    {
        STORED = 0,
        SHRUNK = 1,
        REDUCED_FACTOR_1 = 2,
        REDUCED_FACTOR_2 = 3,
        REDUCED_FACTOR_3 = 4,
        REDUCED_FACTOR_4 = 5,
        IMPLODED = 6,
        TOKENZIED = 7,
        DEFLATED = 8,
        DEFLATE64 = 9,
        LIB_IMPLODE = 10,
    };

When enumeration types are defined, Hex Workshop displays the user-defined labels in addition to the numeric values. The user can change the value of the enumeration by selecting a different user-defined label in a drop down choice box.

“#include” Support

Hex Workshop Structure Libraries can now reference user-defined structure libraries by using a #include directive. This feature offers users improved control over and ability to organize their structure files. In addition, Hex Workshop provides a standard types library that users can include.

Custom Checksum

Users can now calculate up to 12 different checksums within Hex Workshop. The latest checksum algorithm allows users to define a 16 bit or 32 bit CRC by supplying the polynomial, initial value, reflective properties, and final XOR value.

Offset context menu

When clicking the right mouse button over the offset portion of the hex editing display, a new popup context menu is displayed with various offset related options:

  • Switch between hexadecimal and decimal addresses.
    This option is an added convenience for users, who can still modify the file offset from the toolbar and “Options:File Offset” menu.
  • Specify a starting offset value.
    For example, if the file is being mapped into memory at a specific address, one may want to view that file as if were already mapped. The offset display will reflect the designated address. However, document operations still require file-based offsets.
  • Modify how Hex Workshop calculates offset addresses in the hex editing display.
    In response to customer requests, users can now index their data by something other than bytes. In particular, support for indexing by Byte, Word, and DWord is now included. For example, if “Word” is selected, the offset addresses will reflect the number of words within the document. The offset display will reflect the modified addresses. However, document operations still require byte indexed offsets.
  • Modify the length of digits displayed in document offsets.
    This option is an added convenience for users, who can still change the length of digits displayed using the Layout Tab of Preferences or by positioning the mouse over the offset/hex divider line and dragging it to the left or right.
  • Execute the Hex Workshop Goto command.

Intel Hex Code / Motorola S-Record fill byte

When importing Intel Hex Code or Motorola S-Records, users can now specify the fill byte used for unspecified data regions. Prior to v4.10, if an input file did not supply data for all regions of memory spanned by the source file, Hex Workshop would fill unreferenced memory with zeros (0x00). Now, users can designate the fill byte used under the “Import/Export” tab of Preferences.

Swapping bytes in the hex editing display area

When working with binary file with Big Endian ordered bytes, users can now swap the order of bytes displayed in the editor window. This feature is only available when the byte order is set to “Big Endian”. To enable byte swapping, either check “Flip Bytes in Editor” from the “Options:Byte Order” menu or press Ctrl+Alt+Shift+B to toggle into and out of this mode.

When viewing and editing a file with flip bytes enabled, many features are disabled. Turn off byte swapping to re-enable the full Hex Workshop feature set.

Bug Fixes

Prior to v4.10, imported Intel Hex Code documents could be corrupted when records overlapped. This problem has been addressed.

Prior to v4.10, if users clicked on a read-only portion of the structure viewer display instead of an editable element, editing was not initiated upon pressing F2. Now, pressing F2 will invoke the in-placing edit feature for bookmarks, structures, and the data inspector whenever an element has active focus.

When an element in the structure viewer has active focus, pressing the left and right arrow keys will now collapse or expand the structure.