Extended Dump and Load Utility
This page describes, in Unix manual page style,
xd, a utility which dumps files in hexadecimal,
decimal, or octal, with file addresses shown in any of
those formats. xd can read files in any of the
formats it writes, recreating binary files, including
modifications made by editing the dump with any text
editor. In addition, xd can transform a binary
file into a C data declaration which permits embedding
its contents into a program. xd is available as
C source code compatible with most Unix systems and
as a ready-to-run 32-bit Windows executable.
xd - extended dump and load utility
xd [ -aaddrfmt -c
-dlabel -l -ndatafmt
-s ] [ infile [ outfile ] ]
xd dumps files in hexadecimal, decimal, or octal, optionally with
ISO characters side by side. File addresses can likewise be
displayed in hex, decimal, or octal notation.
xd can read dump files in the same formats it writes and create
binary files from the data therein. This allows you to dump a
binary file with xd, edit it with your favourite text editor,
then make a new binary file containing whatever changes you've
made. When creating a binary file, xd normally assumes you've
only modified data in place (neither expanding nor contracting
the file) and verifies file addresses to guarantee this.
However, a "stream" option is available which ignores file
addresses so you're free to insert and delete bytes at will. xd
thus turns your existing text editor into a binary file editor
without requiring you to learn any new commands.
Finally, xd can read a binary file and emit a C language data
declaration which contains the data from the file. This is handy
when you wish to embed binary data within C programs.
- Displays addresses in the dumped file as specified
by addrfmt: d for decimal, h or x for hexadecimal, and
o for octal. By default, addresses are shown in
- Display ISO characters alongside the numeric
dump. Non-printing characters (according to ISO
8859/1) are shown as periods. The ISO characters are
separated from the dump by vertical bar characters,
which xd treats as comment delimiters when loading a
- Dumps the file as a C language declaration of an
array of unsigned char which, when compiled, will
contain the same data as the binary input file. The C
array declaration is given the variable name label, or
xd_data if no label specification is given. Data are
declared as individual bytes to guarantee portability
across architectures with different byte ordering
conventions, and are expressed as decimal numbers in
lines of less than 80 characters for maximum
portability among compilers. The C operator sizeof may
be applied to the array label to obtain its length in
- Load file from dump. xd reads a file in the same
format it writes, creating a binary output file. Each
line is assumed to begin with a file address terminated
by a colon. Data bytes are separated by white space,
and any characters after a vertical bar are ignored
(thus discarding any ISO characters included in the
dump with the -c option). If the -s option is not
specified, each file address is checked against the
number of bytes written so far to guarantee that no
bytes have been added or deleted. Files must be loaded
with the -a and -n options set the same as when the
file was dumped.
- Edits bytes in the dumped file as specified by
datafmt: d for decimal, h or
x for hexadecimal, and o for octal. By
default, bytes are shown in hexadecimal.
- Stream input when loading file. If this option
is specified in conjunction with the -l option, file
addresses are not verified when loading a file and, in
fact, need not be specified at all. The input file is
treated as a stream of byte values separated by white
space. This option allows you to create a dump with
xd, edit it as you wish with any text editor, inserting
and deleting bytes in the file wherever you like, then
create a binary file from the modified dump with the
command xd -l -s dumpfile outfile.
- Print how-to-call information.
If no infile is specified, xd obtains its input from standard
input; if no outfile is given, output is sent to standard output.
The input and output are processed in a strictly serial manner
regardless of options; consequently xd may be used in pipelines
Input error checking in load mode might be improved. Note that
each byte in load mode must be specified as a number in the same
format selected by the -n option when the file was dumped,
separated by white space, and that the -a and -n options must be
set the same when loading a file as when it was dumped.
cc(1), od(1), iso_8859_1(7)
The release archive contains source code, a Makefile
for building the program, and documentation in manual page and
HTML form. A ready-to-run WIN32 executable,
xd.exe is included, along with the workspace
and project definition files used to build it with Microsoft
Visual C 5.0.
This software is in the public domain. Permission to use, copy,
modify, and distribute this software and its documentation for
any purpose and without fee is hereby granted, without any
conditions or restrictions. This software is provided "as is"
without express or implied warranty.
by John Walker