02-26-04 08:34 PM
Jens.Toerring@physik.fu-berlin.de wrote:
> Josh Parker <jcp1217@mail.ecu.edu> wrote:
>=20
>=20
>=20
>=20
>=20
>=20
>=20
> First of all that's not decimal to hex but what you do there is create
> a string representation of the number stored in memory (in whatever
> respresentation the machine likes, but you can be rather sure that
> it's binary;-). You should also be careful, ints could be longer than
> 9 chars on some machines, in which case you might past the end of the
> array for the string!
>=20
> To get a binary string representation you write your own function,
> something like this (but take care, it's completely untested):
>=20
> char bin_string[ CHAR_BIT * sizeof( unsigned int ) + 1 ];
> char *p =3D bin_string;
> unsigned int number =3D 800;
> unsigned int cur =3D 1 << ( CHAR_BIT * sizeof( unsigned int ) - 1 );
>=20
> while ( cur )
> {
> *p++ =3D ( number & cur ) ? '1' : '0';
> cur >>=3D 1;
> }
> *p =3D '\0';
>=20
> Things get a tiny bit more complicted when you don't want leading
> zeros, but that shouldn't be too difficult to figure out...
>=20
> Regards, Jens
Actually, I've found that a lookup table consisting of
16 entries (assuming that char is 8 bits) works a lot
faster. Convert the single char in the hex string to some int=20
representation (e.g. 'f' or 'F' converts to 15) and use that
as in index into the lookup table, which has an array
of strings ( char *table[] ) with binary
representation for that hex character as a null terminated
string.
--=20
=D1
"It is impossible to make anything foolproof because fools are so=20
ingenious" - A. Bloch
[ Post a follow-up to this message ]
|