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)5f (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