Skip to content

a modern and beautiful alternative to xxd and hexdump.

License

Notifications You must be signed in to change notification settings

sweetbbak/hexxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A modern alternative to `xxd` and `hexdump`

example of hexxy in action

Quick install

requirements: Go 1.20+ (it may build with earlier versions as well but I have not tested them) and git

go install github.com/sweetbbak/hexxy/cmd/hexxy@latest

On ArchLinux (hexxy-git), e.g.:

pikaur -S hexxy-git
paru -S hexxy-git
yay -S hexxy-git

Example usage

# normal usage
hexxy /path/to/file.bin

# output without color
hexxy --no-color /path/to/file.bin

# read from stdin
cat mybinary | hexxy

# display plain output
hexxy -p file.bin

# Include a binary as a C variable
hexxy -i input-file > output.c

# Use plain non-formatted output
hexxy -p input-file

# crunch empty lines with a '*' and use uppercase HEX
hexxy -a --upper input-file

# Reverse plain non-formatted output (reverse plain)
hexxy -rp input-file

# Show output with a space in between N groups of bytes
hexxy -g1 input-file ... -> outputs: 00000000: 0f 1a ff ff 00 aa

# display offset in Decimal format
hexxy -td file.bin

# display offset in Octal format
hexxy -to file.bin

# configure color
# shows color even when piping to a file or stdout/stderr
hexxy --color=always # or never, auto

# turn off ascii table color (but keep byte coloring)
hexxy -A

# write the default config file
hexxy --create-config

# ignore config file (you can also just delete it)
# it is not required. Command line flags override config flags
hexxy --no-config

# show ascii table bars
# and set the seperator (great time to set a default in the config file)
hexxy --bars --seperator='|'

Building

git clone https://github.com/sweetbbak/hexxy.git
cd hexxy
go build -o hexxy -ldflags='-s -w' ./src
# or use just by running 'just'

Changelog

  • 3/23/25: added a config file and more options

Performance

zk is a 17mb binary

xxd -i ~/bin/zk &> /dev/null  0.66s user 0.02s system 99% cpu 0.677 total
hexxy -i ~/bin/zk &> /dev/null  0.16s user 0.01s system 98% cpu 0.165 total
# plain XXD
xxd ~/bin/zk &> /dev/null  0.12s user 0.01s system 99% cpu 0.126 total

# hexxy without color
hexxy -N ~/bin/zk &> /dev/null  0.21s user 0.01s system 100% cpu 0.223 total

# hexxy with color
hexxy ~/bin/zk &> /dev/null  0.37s user 0.01s system 99% cpu 0.383 total

hexxy is obviously going to be slower as it is writing a lot more bytes in the form of ANSI escape sequences. There is potential to optimize this using some deduplication or Huffman encoding, but that might also be slower.

Credits

thanks to felixge for showing how this is done quickly thanks to igoracmelo for the idea to colorize hexdump output with a gradient

thanks to everyone who has committed to this repo! <3

About

a modern and beautiful alternative to xxd and hexdump.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •