View Source Hexdump

Docs can be found on hexdocs

Hexdump makes it easier to work with binary data.

By default elixir display binaries as a list of integers in the range from 0..255.

This make it problematic to spot binary patterns.

example binary:

  term = <<0,1,2,3,4>> <> "123abcdefxyz" <> <<253,254,255>>
  <<0, 1, 2, 3, 4, 49, 50, 51, 97, 98, 99, 100, 101, 102, 120, 121, 122, 253, 254,
  255>>

You can pass a param to IO.inspect(term, base: :hex) to print the same term as hex, this makes it a bit easier to decipher.

  <<0x0, 0x1, 0x2, 0x3, 0x4, 0x31, 0x32, 0x33, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
  0x78, 0x79, 0x7A, 0xFD, 0xFE, 0xFF>>

With Hexdump you can see similar output like in hex editors example

The first column is offset

second shows a row of 16 bits in binary

last column shows printable characers

  0000000  0001 0203 0431 3233 6162 6364 6566 7879   .....123abcdefxy
  0000010  7AFD FEFF                                 z...

You can switch between hexdump output by calling:

  Hexdump.on()
  Hexdump.off()
  Hexdump.on(binaries: :infer)
  Hexdump.on(binaries: :as_strings)

Installation

If available in Hex, the package can be installed by adding hexdump to your list of dependencies in mix.exs:

def deps do
  [
    {:hexdump, "~> 0.1.0"}
  ]
end