fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char *reverse_str(char *src) {
  6. const size_t len = strlen(src);
  7. for (int i = 0; i < len >> 1; ++i) {
  8. char tmp = src[i];
  9. src[i] = src[len - 1 - i];
  10. src[len - 1 - i] = tmp;
  11. }
  12. return src;
  13. }
  14.  
  15. char *num2string(unsigned long long n, unsigned base) {
  16. if (base < 2 || base > 36) {
  17. fprintf(stderr, "base %d is not supported", base);
  18. return NULL;
  19. }
  20.  
  21. char str[65] = {}; // 64bit + 1
  22. for (int i = 0; n; n /= base, ++i) {
  23. char c;
  24. unsigned rem = n % base;
  25. if (rem < 10)
  26. c = '0' + rem;
  27. else
  28. c = 'A' + rem - 10;
  29. str[i] = c;
  30. }
  31. return reverse_str(str);
  32. }
  33.  
  34. int main(int argc, char **argv) {
  35. unsigned long long n;
  36. if (argc == 1)
  37. scanf("%lld", &n);
  38. else
  39. n = atoll(argv[1]);
  40.  
  41. for (int base = 2; base <= 16; ++base)
  42. printf("base(%d) --> %s\n", base, num2string(n, base));
  43.  
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0s 4364KB
stdin
123456
stdout
base(2) --> 11110001001000000
base(3) --> 20021100110
base(4) --> 132021000
base(5) --> 12422311
base(6) --> 2351320
base(7) --> 1022634
base(8) --> 361100
base(9) --> 207313
base(10) --> 123456
base(11) --> 84833
base(12) --> 5B540
base(13) --> 44268
base(14) --> 32DC4
base(15) --> 268A6
base(16) --> 1E240