| static const char * const lcset = "0123456789abcdef"; |
| static const char * const ucset = "0123456789ABCDEF"; |
| |
| char * |
| f (char *buffer, long long value, char type) |
| { |
| int base, i; |
| |
| i = 128 - 1; |
| buffer[i--] = '\0'; |
| |
| switch (type) |
| { |
| case 'u': |
| case 'o': |
| case 'x': |
| case 'X': |
| if (type == 'u') |
| base = 10; |
| else if (type == 'o') |
| base = 8; |
| else |
| base = 16; |
| |
| while (i >= 0) |
| { |
| if (type == 'X') |
| buffer[i--] = ucset[((unsigned long long) value) % base]; |
| else |
| buffer[i--] = lcset[((unsigned long long) value) % base]; |
| |
| if ((value = ((unsigned long long) value) / base) == 0) |
| break; |
| } |
| break; |
| } |
| |
| return &buffer[++i]; |
| } |