Skip to content

kreativekorp/hexcellent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Hexcellent

A hex editor. Includes these features:

  • Does not require an existing file to edit
  • Unlimited undo and redo
  • Full copy and paste functionality of both hex and text
  • Find and replace
  • Customizable font and color scheme
  • User-settable text encoding
  • Data inspector supporting both big-endian and little-endian values

Power Keys

When Power Keys are enabled and the focus is on the hex side of the editor, the following keys will have the following effects:

  • Z - Replace selection with all zeros (00 00)
  • Y - Replace selection with all ASCII spaces (20 20)
  • X - Replace selection with all ones (FF FF)
  • I - Invert selected bits (00 00FF FF and vice versa)
  • M - Invert most significant bits of selected bytes (00 FF80 7F and vice versa)
  • V - Replace selection with random data
  • S - Swap selected bytes / reverse endianness (01 0202 01 and vice versa)
  • N - Swap selected nybbles (12 3443 21 and vice versa)
  • R - Swap selected bits (80 0000 01 and vice versa)
  • [ - Rotate selected bits to the left (ROL)
  • ] - Rotate selected bits to the right (ROR)
  • < - Shift selected bits to the left (ASL)
  • > - Shift selected bits to the right with sign extension (ASR)
  • ? - Shift selected bits to the right with zero extension (LSR)
  • + - Increment selected value
  • - - Decrement selected value
  • K - Set mark at start of selection
  • J - Jump to (mark + selected value)
  • H - Switch between hex and decimal addresses
  • L - Switch between big and little endian

Find and Replace

Why use regular text fields for find and replace like other hex editors when what you're finding and replacing is binary data, not text? Instead of regular text fields in its Find & Replace dialog, Hexcellent uses... more hex editors!

The Backstory

I went looking for a (graphical) hex editor on Linux. After trying several (GHex, Bless, Okteta, wxHexEditor), I was disappointed to find not a single one that didn't have at least one of the following issues:

  • Requires an existing file to edit
  • Copy and paste limited to the text side
  • Copy and paste limited to the hex side
  • Copy and paste on the hex side picky about whitespace
  • Copy and paste completely broken
  • Saving completely broken

I had had enough of everything I tried not getting the basics right and decided to do what I always do in these situations: write my own. I had in fact already written one years ago, inspired by an old Macintosh program called HexEdit, as part of a project called Resplendence. So I took a look at my decade-old code, said "what a mess," started over, and rewrote it as a standalone application.

Be hexcellent to each other.