- #include <stdlib.h>
- void i2b(long long i, int b) {
- long long ti = i;
- int tb = 0;
- int *v = 0;
- int *tv = 0;
- int iv = 0;
- int n = 0;
- int r = 0;
- if (i < 0 || b == 0) {
- printf("error params");
- return;
- }
- tb = b > 0 ? b : -b;
- while (ti != 0) {
- ++n;
- ti = ti / tb;
- }
- ++n;
- v = (int *)malloc(n * sizeof(int));
- tv = v;
- ti = i;
- while (0 != ti) {
- r = ti % b;
- ti = ti / b;
- if (r < 0) {
- r -= b;
- ti += 1;
- }
- *(tv++) = r;
- }
- printf("%lld is equals(base %d):", i, b);
- for (iv = 1; tv - iv >= v; ++iv) {
- printf("%d", *(tv - iv));
- }
- free(v);
- }
- //该片段来自于http://www.codesnippet.cn/detail/0311201410876.html
来源: http://www.codesnippet.cn/detail/0311201410876.html