Hexadecimal conversions

Robert Virding robert.virding@REDACTED
Tue Nov 26 11:56:26 CET 2002


Robert Virding wrote:
> ----- Original Message ----- 
> From: "Chris Pressey" <cpressey@REDACTED>
> To: <matthias@REDACTED>
> Cc: <erlang-questions@REDACTED>
> Sent: Thursday, November 21, 2002 9:05 PM
> Subject: Re: Hexadecimal conversions
> 
>>Also on the subject, there was once on this list some code to add hex
>>formatting to io_lib:format/2, but I don't know if it ever made it into
>>OTP...
>>
>>-Chri
> 
> A few different attempts at adding hex output to io_lib:fwrite :-) have been done.
 > I did a reasonably complete one which gave some control over output 
format.
 > I will try and find it and post it to this list so you can see if 
this is what you want/need.
> 
> Robert

Looking  back through old erlang-questions entries I see that earlier 
this year I posted a modification to io_lib_format.erl which had both 
signed based integers and binary/hex output.

I am reposting it, and invite comments. If no one really complains 
loadly then perhaps it can go into the next distribution? There is one 
small bug which needs fixing.

Some examples:

Eshell V2001.09.13  (abort with ^G)
1> io:fwrite("~#~n", [4711]).                     %Default is 8
8#11147
ok
2> io:fwrite("~#~n", [-4711]).
-8#11147
ok
3> io:fwrite("~.16#~n", [-4711]).
-16#1267
ok
4> io:fwrite("~.16#~n", [4711]).
16#1267
ok
5> io:fwrite("~28.16#~n", [4711]).
                      16#1267
ok
6> io:fwrite("~b~n", [4711]).                     %Default is 32 bits
00000000000000000001001001100111
ok
7> io:fwrite("~b~n", [-4711]).
11111111111111111110110110011001
ok
8> io:fwrite("~.16b~n", [-4711]).                 %Default is 32 bits
1110110110011001
ok
9> io:fwrite("~.16b~n", [4711]).
0001001001100111
ok
10> io:fwrite("~.16x~n", [4711]).
1267
ok
11> io:fwrite("~.16x~n", [-4711]).
ed99
ok
12> io:fwrite("~x~n", [-4711]).
ffffed99
ok
13> io:fwrite("~x~n", [4711]).
00001267
ok

The precision field is used for the base with ~# and the number of bits 
in ~b/~x. The field width is still the field width. ~b/~x are really 
only meant to be used to display bits as it is not guaranteed that if 
you read them back again you will get the same value. Why is left as an 
exercise to the reader. :-)

Comments?

Robert
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: io_lib_format.erl
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20021126/38375338/attachment.ksh>


More information about the erlang-questions mailing list