1 static const char * const lcset = "0123456789abcdef";
2 static const char * const ucset = "0123456789ABCDEF";
3 
4 char *
f(char * buffer,long long value,char type)5 f (char *buffer, long long value, char type)
6 {
7   int base, i;
8 
9   i = 128  - 1;
10   buffer[i--] = '\0';
11 
12   switch (type)
13     {
14     case 'u':
15     case 'o':
16     case 'x':
17     case 'X':
18       if (type == 'u')
19 	base = 10;
20       else if (type == 'o')
21 	base = 8;
22       else
23 	base = 16;
24 
25       while (i >= 0)
26 	{
27 	  if (type == 'X')
28 	    buffer[i--] = ucset[((unsigned long long) value) % base];
29 	  else
30 	    buffer[i--] = lcset[((unsigned long long) value) % base];
31 
32 	  if ((value = ((unsigned long long) value) / base) == 0)
33 	    break;
34 	}
35       break;
36     }
37 
38   return &buffer[++i];
39 }
40