Imported Upstream version 2.9.0
[debian/cc1111] / device / examples / ltoa.c
1 /*-------------------------------------------------------------------------
2  integer to string conversion
3
4  Written by:   Bela Torok, 1999
5                bela.torok@kssg.ch
6  usage:
7
8  ultoa(unsigned long value, char* string, int radix)
9  ltoa(long value, char* string, int radix)
10
11  value  ->  Number to be converted
12  string ->  Result
13  radix  ->  Base of value (e.g.: 2 for binary, 10 for decimal, 16 for hex)
14 ---------------------------------------------------------------------------*/
15
16 #define NUMBER_OF_DIGITS 32
17
18 void ultoa(unsigned long value, char* string, int radix)
19 {
20 unsigned char index;
21 char buffer[NUMBER_OF_DIGITS];  /* space for NUMBER_OF_DIGITS + '\0' */
22
23   index = NUMBER_OF_DIGITS;
24
25   do {
26     buffer[--index] = '0' + (value % radix);
27     if ( buffer[index] > '9') buffer[index] += 'A' - ':'; /* continue with A, B,... */
28     value /= radix;
29   } while (value != 0);
30
31   do {
32     *string++ = buffer[index++];
33   } while ( index < NUMBER_OF_DIGITS );
34
35   *string = 0;  /* string terminator */
36 }
37
38 void ltoa(long value, char* string, int radix)
39 {
40   if (value < 0 && radix == 10) {
41     *string++ = '-';
42     ultoa(-value, string, radix);
43   }
44   else {
45     ultoa(value, string, radix);
46   }
47 }
48