#include <stdio.h>
// 10 to 2
char* dec_to_bin(char* d, int n) {
char* t = d;
unsigned u = (unsigned)n;
for(unsigned i = u; i != 0; i >>= 1)
++d;
*d = '\0';
for(--d; u != 0; u >>= 1)
*d-- = (u & 1) + '0';
return t;
}
// 2 to 10
int bin_to_dec(const char* b) {
unsigned n = 0u;
while(*b) {
n |= (*b - '0');
if(*(++b))
n <<= 1;
}
return (int)n;
}
int main(void){
char b[33];
int n;
n = -0xFFFF;
printf("src: %d\n", n);
printf("bin: %s\n", dec_to_bin(b, n));
printf("dst: %d\n\n", bin_to_dec(b));
n = -0xFFFFFFF;
printf("src: %d\n", n);
printf("bin: %s\n", dec_to_bin(b, n));
printf("dst: %d\n\n", bin_to_dec(b));
n = -1234567;
printf("src: %d\n", n);
printf("bin: %s\n", dec_to_bin(b, n));
printf("dst: %d\n\n", bin_to_dec(b));
return 0;
}