Number Formatting Question

Brent Fulgham <>
Fri Feb 13 00:25:11 CET 2004


I'm a newcoming to Erlang, so please bear with me.

Is there any way to instruct Erlang to format a number
with leading zeros?

For example, I wanted to produce a standard
hexadecimal dump of some IPTrace data.  I figured out
how to format the correct spacing (see the following
pathetic Erlang hack):

%  Routine to pretty-print datagrams
print_raw_bytes([], Count) ->
    io:format("~n");
print_raw_bytes([H|Tail], Count) ->
    io:format("~2.16B", [H]),
    Z= Count rem 2,
    IncCount = case Count of
        1 -> Count + 1;
	8 -> io:format("  "), Count + 1;
        16 -> io:format("~n"), 1;
	_ ->
	    if
	    	Z == 0

This produces the desired output as follows:
RAW SEND DATA:
 0 C  0 0  0 1  015  6D74 735F 696E 7172
 0 B  230 3030 3031  3233 3535  0
RAW RECEIVED PACKET:
 0 B  0 0  0 1  01A   0 0  016  035 3230
32 0  0 0  0 0  0 0   0 2  0 0 1387  0 0
 0 0 

What I am trying to achieve is:
RAW SEND DATA:
000C 0000 0001 0015  6D74 735F 696E 7172
000B 0230 3030 3031  3233 3535 00
RAW RECEIVED PACKET:
000B 0000 0001 001A  0000 0016 0035 3230
3200 0000 0000 0000  0002 0000 1387 0000
0000 

Any ideas?

Thanks,

-Brent



More information about the erlang-questions mailing list