= hexy.js -- utility to create hex dumps
hexy
is a javascript (node) library that's easy to use to create hex
dumps from within node. It contains a number of options to configure
how the hex dumb will end up looking.
It should create a pleasant looking hex dumb by default:
var hexy = require('hexy'),
b = new Buffer("\000\001\003\005\037\012\011bcdefghijklmnopqrstuvwxyz0123456789")
console.log(hexy.hexy(b))
results in this dump:
0000000: 00 01 03 05 1f 0a 09 62 63 64 65 66 67 68 69 6a .......b cdefghij
0000010: 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a klmnopqr stuvwxyz
0000020: 30 31 32 33 34 35 36 37 38 39 01234567 89
but it's also possible to configure:
- Line numbering
- Line width
- Format
- Case of hex decimals
- Presence of the ASCII annotation in the right column.
This mean you can do exciting dumps like:
0000000: 0001 0305 1f0a 0962 .... ...b
0000008: 6364 6566 6768 696a cdef ghij
0000010: 6b6c 6d6e 6f70 7172 klmn opqr
0000018: 7374 7576 7778 797a stuv wxyz
0000020: 3031 3233 3435 3637 0123 4567
0000028: 3839 89
or even:
0000000: 00 01 03 05 1f 0a 09 62 63 64 65 66 67 68 69 6a
0000010: 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a
0000020: 30 31 32 33 34 35 36 37 38 39
with hexy!
Formatting options are configured by passing a format
object to the hexy
function:
var format = {}
format.width = width // how many bytes per line, default 16
format.numbering = n // ["hex_bytes" | "none"], default "hex_bytes"
format.format = f // ["fours"|"twos"|"none"], how many nibbles per group
// default "fours"
format.caps = c // ["lower"|"upper"], default lower
format.annotate=a // ["ascii"|"none"], ascii annotation at end of line?
// default "ascii"
format.prefix=p // <string> something pretty to put in front of each line
// default ""
format.indent=i // <num> number of spaces to indent
// default 0
console.log(hexy.hexy(buffer, format))
In case you're really nerdy, you'll have noticed that the defaults correspond
to how xxd
formats it's output.
== Installing
Either use npm
:
npm install hexy
This will install the lib which you'll be able to use like so:
var hexy = require("hexy"),
buf = // get Buffer from somewhere,
str = hexy.hexy(buf)
It will also install hexy
into your path in case you're totally fed up
with using xxd
.
If you don't like npm
, grab the source from github:
http://github.com/a2800276/hexy.js
== TODOS
The current version only pretty prints Buffers. Which probably means it
can only be used from within node. What's more important what it
doesn't support: Strings (which would be nice for the sake of
completeness) and Streams/series of Buffers which would be nice so you
don't have to collect the whole things you want to pretty print in
memory. hexy
is probably most useful for debugging and getting binary
protocol stuff working, so that's probably not an too much of an issue.
== Thanks
== History
This is a fairly straightforward port of hexy.rb
which does more or less the
same thing. You can find it here:
http://github.com/a2800276/hexy
in case these sorts of things interest you.
== Mail
In case you discover bugs, spelling errors, offer suggestions for
improvements or would like to help out with the project, you can contact
me directly (tim@kuriositaet.de).