3 releases

0.4.2 Dec 2, 2022
0.4.1 Jul 8, 2021
0.4.0 Jul 8, 2021

#1912 in Encoding


Used in hxt

ISC license

22KB
669 lines

hext

Do you find yourself exploring file formats, such as GIF, and finding yourself annoyed with hex editors? Do you find yourself wanting to craft 802.11 packets, but you know you'll never be able to keep all the fields straight in your head? Write those packets in hext! hext (*.hxt) is a file format for writing small (or large, if you dare) binary files with comments. You can switch between hex, binary, and decimal and even stick some string literals in there.

The CLI tool is called hxt and it can be found here. To install it, run

cargo install hxt

This is what a small GIF looks like:

~little-endian msb0
"GIF89a"    # File header and version string

# Logical Screen Descriptor
u16=4 u16=4 # Canvas width/height
.1          # Global Color Table Flag
.000        # Color Resolution
.0          # Reserved in 87a
.000        # Number of colors. 2^(this_value + 1) colors
00          # Background Color Index
00          # Pixel Aspect Ratio

# Global Color Table
=0   =0   =0   # Black
=255 =255 =255 # White 

# Image Descriptor
","         # Image Separator
u16=0 u16=0 # Image offset left/top
u16=4 u16=4 # Image width/height
.1          # Local Color Table Flag
.0          # Interlaced Flag
.000        # Reserved in 87a
.000        # Size of local color table

# Local Color Table
=0   =0   =0    # Black
=128 =0   =255  # Purple

# Image Data
02               # LZW Minimum Code Size
05 841D817A50 00 # Data sub-block

# Graphic Control Extension
"!" F9   # Extension Introducer and Graphic Control Label
=4       # Extension data block size
	.000 # Reserved
	.010 # Disposal Method (010 is restore to background color)
	.0   # User Input Flag
	.0   # Transparent color flag

	u16=50 # Delay (1/100ths of a second)
	00     # Transparent Color Index
00 # Block terminator

# 2nd Image Descriptor
"," u16=0 u16=0 u16=4 u16=4 .00000000

# 2nd Image's Data (same as the first)
02 05 841D817A50 00

";" # GIF Terminator

I really do mean small. Here it is: a very small gif

Dependencies

~1MB
~23K SLoC