FEdit is a hex editor and interactive disassembler that I've written. In addition to the usual features provided by hex editors, FEdit power lies in its ability to allow users to define dynamic binary structures for file formats, including conditional nodes, arrays and nodes of varying sizes, parsing as appropriate while leaving unknown regions in their original binary form. All editing is done in realtime -- any modification that affects the structure of a file is instantly calculated and displayed, including bytes within defined structures.
Let's look at a file. Like any other hex editor, the standard view is confusing and unimpressive.
However, FEdit can help you define a structure for this type of file that may be used for editing all files of this type, or refined further to reverse-engineer its file format. Bytes within structure elements are drawn in yellow if their parent elements are displayed in expanded form. Unrecognized bytes are drawn in white. The values of recognized primitive types and arrays of primitive types are displayed.