A hex editor, also called a binary file editor or byte editor, is a type of program that allows a user to view and edit the raw and exact contents of files, that is, at the byte level, in contrast to the higher level interpretations of the same contents that are provided by other, higher level application programs.
A byte (represented by the upper-case letter B), is a contiguous sequence of eight bits that is used as a unit of memory, storage and instructions execution in computers. A file is a named collection of bytes that appears to the user as a single, contiguous block of data and that is retained in storage (e.g., a hard disk drive, floppy disk or CDROM).
Hex editors derive their name from the fact that they display every byte in a file in hexadecimal notation. Hexadecimal refers to the base-16 number system, which consists of 16 unique symbols (i.e., 0 through F), in contrast to the ten unique symbols of the commonly used decimal (i.e., base 10) numbering system. This system is extensively used by programmers to describe locations in memory because it can represent every byte as two consecutive hexadecimal digits instead of the eight digits that would be required by binary (i.e., base 2) numbers and the three digits that would be required with decimal numbers. In addition, it is much easier for humans to read hexadecimal numbers than binary numbers, and it is nearly as easy for computer professionals to read hexadecimal numbers as decimal numbers.
Conventional text editors only display plain text, which consists of alphanumeric characters. A text editor is a small program that has been developed specifically for writing and editing plain text and which differs from a word processor in that it has little or no document formatting capabilities.
Alphanumeric characters are those which is located in the range of ASCII 32 (blank space) through ASCII 126 (tilde). ASCII, an acronym for American Standard Code for Information Interchange, is the de facto standard for the character encoding used by computers and communications equipment to represent text, and it (or some compatible extension of it) is used on most computers. There are 128 standard character encodings in US-ASCII, the original and most basic version of ASCII. Each of these is a seven digit binary number between 0000 0000 and 0111 1111. Extended ASCII,, uses all 256 possible character encodings, all of which can be viewed with a hex editor.
Hex editors are typically capable of displaying their output in hexadecimal, decimal, octal, binary and plain text modes. Usually, there are two panes so that users can see output simultaneously in two different modes. They often have a number of tools that add to their usefulness, such as the ability to search for specific text or other values in various forms (e.g., hexadecimal or binary), show only the strings (i.e., sequences of plain text) and provide statistics on the frequency of use of each character or value.
Hex editors are available for use on every major operating system. The standard hex editors for Linux include GHex, which is included in the GNOME desktop environment, and KHexEdit, which is part of the KDE desktop environment.
Hex editors are an important tool for several purposes, including studying the structure of proprietary (i.e., commercial) programs, program development, data recovery and computer forensics.
Created June 11, 2006.