Numchar and Phdecode

# US Phone Numbers

In the US telephone numbers can be expressed as a combination of digits and characters. The digits 2 - 9 each have three characters assigned to them.

This allows businesses (and individuals) to have a phone number that is easy to remember. For example, in Pittsburgh, PA, there is a chain of Chinese restaurants. All of its phone numbers end with RICE, which is the same as 7423, but much easier to remember.

The digits 1 and 0 do not have any corresponding characters. In addition, letters Q and Z are not on the dial.

US telephones contain both the digits and their corresponding characters on their dials. However, telephones in most other countries do not. This may make it impossible for someone outside the US to call a US company if all he has is a phone number containing one or more characters.

Numchar and phdecode are programs that allow anyone to convert a phone number to the corresponding character sequence, and to decode a character number into its respective digits.

## Numchar

Numchar creates all possible combinations of digits and characters for a given phone number (or several phone numbers). To use it, type numchar followed by the phone number or numbers. You can type it as any combination of digits and characters. You may also use the * and # characters that appear on all new US telephones.

If you type anything other than alphanumerics, or * and #, numchar will interpret it as a digits separator and replace it with a dash (-). If you use the letters Q and Z, numchar will print a question mark (?) in their place.

Use a blank space, or tab, to separate the numbers on the command line. If you wish to use a space inside a number, surround the number with ASCII quotes (").

### Example

Type:

    	numchar 3456

This will produce the following output:

    3456:
    	3456
    	345M
    	345N
    	345O
    	34J6
    	34JM
    	34JN
    	34JO
    	34K6
    	34KM
    	34KN
    	34KO
    	34L6
    	34LM
    	34LN
    	34LO
    	3G56
    	3G5M
    	3G5N
    	3G5O
    	3GJ6
    	3GJM
    	3GJN
    	3GJO
    	3GK6
    	3GKM
    	3GKN
    	3GKO
    	3GL6
    	3GLM
    	3GLN
    	3GLO
    	3H56
    	3H5M
    	3H5N
    	3H5O
    	3HJ6
    	3HJM
    	3HJN
    	3HJO
    	3HK6
    	3HKM
    	3HKN
    	3HKO
    	3HL6
    	3HLM
    	3HLN
    	3HLO
    	3I56
    	3I5M
    	3I5N
    	3I5O
    	3IJ6
    	3IJM
    	3IJN
    	3IJO
    	3IK6
    	3IKM
    	3IKN
    	3IKO
    	3IL6
    	3ILM
    	3ILN
    	3ILO
    	D456
    	D45M
    	D45N
    	D45O
    	D4J6
    	D4JM
    	D4JN
    	D4JO
    	D4K6
    	D4KM
    	D4KN
    	D4KO
    	D4L6
    	D4LM
    	D4LN
    	D4LO
    	DG56
    	DG5M
    	DG5N
    	DG5O
    	DGJ6
    	DGJM
    	DGJN
    	DGJO
    	DGK6
    	DGKM
    	DGKN
    	DGKO
    	DGL6
    	DGLM
    	DGLN
    	DGLO
    	DH56
    	DH5M
    	DH5N
    	DH5O
    	DHJ6
    	DHJM
    	DHJN
    	DHJO
    	DHK6
    	DHKM
    	DHKN
    	DHKO
    	DHL6
    	DHLM
    	DHLN
    	DHLO
    	DI56
    	DI5M
    	DI5N
    	DI5O
    	DIJ6
    	DIJM
    	DIJN
    	DIJO
    	DIK6
    	DIKM
    	DIKN
    	DIKO
    	DIL6
    	DILM
    	DILN
    	DILO
    	E456
    	E45M
    	E45N
    	E45O
    	E4J6
    	E4JM
    	E4JN
    	E4JO
    	E4K6
    	E4KM
    	E4KN
    	E4KO
    	E4L6
    	E4LM
    	E4LN
    	E4LO
    	EG56
    	EG5M
    	EG5N
    	EG5O
    	EGJ6
    	EGJM
    	EGJN
    	EGJO
    	EGK6
    	EGKM
    	EGKN
    	EGKO
    	EGL6
    	EGLM
    	EGLN
    	EGLO
    	EH56
    	EH5M
    	EH5N
    	EH5O
    	EHJ6
    	EHJM
    	EHJN
    	EHJO
    	EHK6
    	EHKM
    	EHKN
    	EHKO
    	EHL6
    	EHLM
    	EHLN
    	EHLO
    	EI56
    	EI5M
    	EI5N
    	EI5O
    	EIJ6
    	EIJM
    	EIJN
    	EIJO
    	EIK6
    	EIKM
    	EIKN
    	EIKO
    	EIL6
    	EILM
    	EILN
    	EILO
    	F456
    	F45M
    	F45N
    	F45O
    	F4J6
    	F4JM
    	F4JN
    	F4JO
    	F4K6
    	F4KM
    	F4KN
    	F4KO
    	F4L6
    	F4LM
    	F4LN
    	F4LO
    	FG56
    	FG5M
    	FG5N
    	FG5O
    	FGJ6
    	FGJM
    	FGJN
    	FGJO
    	FGK6
    	FGKM
    	FGKN
    	FGKO
    	FGL6
    	FGLM
    	FGLN
    	FGLO
    	FH56
    	FH5M
    	FH5N
    	FH5O
    	FHJ6
    	FHJM
    	FHJN
    	FHJO
    	FHK6
    	FHKM
    	FHKN
    	FHKO
    	FHL6
    	FHLM
    	FHLN
    	FHLO
    	FI56
    	FI5M
    	FI5N
    	FI5O
    	FIJ6
    	FIJM
    	FIJN
    	FIJO
    	FIK6
    	FIKM
    	FIKN
    	FIKO
    	FIL6
    	FILM
    	FILN
    	FILO

This is useful when you want to find a way of expressing an existing phone number into an easy-to-remember text string. In this case, FILM is a good word.

It is also useful to test a potential number before accepting it, to see if it may be used to ridicule you because it happens to combine into an undesirable phrase.

For example, you definitely do not want your number to be 328-7448. If you do not believe me, type:

    	numchar "328 7448" | more

and search for EAT-SH, then look at the 14th matching line...

## Phdecode

This program works just like numchar. In fact, it is a symbolic link to numchar (under Unix), or simply numchar renamed phdecode.exe (under Windows).

The only difference is that it will only give you the digits of a phone number.

### example

Type:

    	phdecode "BSD Unix"

The output will be:

    BSD Unix:
    	273-8649

This is useful when you want to get a new phone number and want it to be both easy to remember, and have some relationship to who you are or what you do.

It is also useful when you want to dial a phone number which contains alphabetic characters, and you do not have a phone with chacters on its dial.

### Installation

You can download numchar from the unix directory of ftp.whizkdtech.net.

If your system is Unix, type make to build the executable for numchar. Then install it to wherever you keep your executables (typically, /usr/bin/ or /usr/local/bin/).

Next, create a symbolic link to and name it phdecode. The appropriate Unix command typically is:

    	ln -s numchar phdecode

Under Windows, use your favorite C compiler to compile numchar.c to numchar.exe, then create a copy named phdecode.exe:

    	copy numchar.exe phdecode.exe

Copyright © 1999 G. Adam Stanislav. All rights reserved.

Numchar is released under BSD type license. See the source code (numchar.c) for details.