Search code examples
c++logginghexhexdump

Off-the-Shelf C++ Hex Dump Code


I work a lot with network and serial communications software, so it is often necessary for me to have code to display or log hex dumps of data packets.

Every time I do this, I write yet another hex-dump routine from scratch. I'm about to do so again, but figured I'd ask here: Is there any good free hex dump code for C++ out there somewhere?

Features I'd like:

  • N bytes per line (where N is somehow configurable)
  • optional ASCII/UTF8 dump alongside the hex
  • configurable indentation, per-line prefixes, per-line suffixes, etc.
  • minimal dependencies (ideally, I'd like the code to all be in a header file, or be a snippet I can just paste in)

Edit: Clarification: I am looking for code that I can easily drop in to my own programs to write to stderr, stdout, log files, or other such output streams. I'm not looking for a command-line hex dump utility.


Solution

  • The unix tool xxd is distributed as part of vim, and according to http://www.vmunix.com/vim/util.html#xxd, the source for xxd is ftp://ftp.uni-erlangen.de:21/pub/utilities/etc/xxd-1.10.tar.gz. It was written in C and is about 721 lines. The only licensing information given for it is this:

    * Distribute freely and credit me,
    * make money and share with me,
    * lose money and don't ask me.
    

    The unix tool hexdump is available from http://gd.tuwien.ac.at/softeng/Aegis/hexdump.html. It was written in C and can be compiled from source. It's quite a bit bigger than xxd, and is distributed under the GPL.