---
name: "hexwords"
section: "1"
platform: "linux"
package: "mpatrolc2"
version: "1.4.8-11"
release: "Debian 4.0 (Etch)"
platforms: ["linux"]
url: "https://new.carta.tech/hexwords"
---

# hexwords(1)

extracts any words from a file that can be written as hex numbers

## NAME

hexwords - extracts any words from a file that can be written as hex numbers

## SYNOPSIS

**hexwords** \[*options*\] \[*dictfile*\]

## DESCRIPTION

The **hexwords** command is a little tool that can be used to generate hexadecimal constants from a dictionary of known words.  Such numerical constants can be used in source files for a variety of debugging problems, and problems with uninitialised variables are especially relevant since these special numbers will stand out if seen from within a debugger.  For example, here are some common (and some not-so-common) 32-bit hexadecimal constants that can be used as debugging aids:

| | |
| --- | --- |
| *word* | *hex constant* |
| addedbad | 0xaddedbad |
| allocate | 0xa110ca7e |
| badlabel | 0xbad1abe1 |
| baseball | 0xba5eba11 |
| codebabe | 0xc0debabe |
| codedbad | 0xc0dedbad |
| deadbeef | 0xdeadbeef |
| deadcode | 0xdeadc0de |
| failsafe | 0xfa115afe |
| feedface | 0xfeedface |
| freedata | 0xf4eeda7a |
| goodcode | 0x600dc0de |

As can be seen above, many decimal digits can be used to represent the letters that they most closely resemble, along with the hexadecimal digits *A* through *F*.  This provides a much larger selection of words that can be matched, although the digits *3* and *8* cannot be used due to the lack of any similar-looking letters.  The digits and their corresponding letters are given in the following table.

| | |
| --- | --- |
| *digit* | *letter* |
| 0 | O, o or Q |
| 1 | I, i or l |
| 2 | Z or z |
| 3 | - |
| 4 | q or R |
| 5 | S or s |
| 6 | G |
| 7 | J or T |
| 8 | - |
| 9 | g |
| A-F | A-F |
| a-f | a-f |

The *dictfile* argument must be a valid dictionary filename but if *dictfile* is omitted then **hexwords** will use */usr/dict/words* as the name of the dictionary file to use.  If that cannot be found then **hexwords** will try */usr/lib/dict/words* and */usr/share/dict/words*.  The dictionary file must be a plain text file that contains one word per line, otherwise few to no words will be matched.

The **hexwords** command currently makes use of several UNIX text processing commands in order to extract the words and their hexadecimal equivalents.  As a result, the **hexwords** command is only likely to work on UNIX platforms or on systems which have the necessary commands installed.

## OPTIONS

- **--help** \[**-h**\]

  Displays a quick-reference option summary.

- **--match** \<*exact*\|*lower*\|*upper*\|*any*\> \[**-m**\]

  Sets the type of case-sensitivity to use.  A setting of *exact* performs a case-sensitive comparison of all of the words in the dictionary file and the hexadecimal digits, whereas a setting of *any* does not.  The *lower* and *upper* settings convert the words in the dictionary file to lower and upper case respectively before performing a case-sensitive comparison.  The default case-sensitivity is *exact*.

- **--maximum** \<*count*\> \[**-u**\]

  Sets the maximum number of letters to match.  None of the hexadecimal numbers displayed will have any more digits than this.  The default is *8*.

- **--minimum** \<*count*\> \[**-l**\]

  Sets the minimum number of letters to match.  None of the hexadecimal numbers displayed will have any less digits than this.  The default is *4*.

- **--version** \[**-V**\]

  Displays the version number of the **hexwords** command.

## SEE ALSO

[**mpatrol**(1)](/mpatrol/1.md), [**mprof**(1)](/mprof/1.md), [**mptrace**(1)](/mptrace/1.md), [**mleak**(1)](/mleak/1.md), [**mpsym**(1)](/mpsym/1.md), [**mpedit**(1)](/mpedit/1.md), [**libmpatrol**(3)](/libmpatrol/3.md), [**libmpalloc**(3)](/libmpalloc/3.md).

The mpatrol manual and reference card.

http://www.cbmamiga.demon.co.uk/mpatrol/

## AUTHOR

Graeme S. Roy \<graeme.roy@analog.com\>

## COPYRIGHT

Copyright (C) 1997-2002 Graeme S. Roy \<graeme.roy@analog.com\>

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public License for more details.

You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
