[ create a new paste ] login | about

Link: http://codepad.org/tsG6hWKD    [ raw code | output | fork ]

C, pasted on Oct 8:
#include <stdio.h>


//10 -> 2
char* dec_to_bin(char* b, int n) {
    char* p, c, *t = b;
    size_t i;

    for(i = (size_t)n; i != 0; i >>= 1)
        *b++ = (char)(i & 1) + '0';
    *b = '\0';

    // rev
    for(--b, p = t; p < b; ++p, --b) {
        c  = *p;
        *p = *b;
        *b = c;
    }
    return t;
}



// 2 -> 10
int bin_to_dec(const char* s) {
    const char* p;
    int k, c, i, n = 0;

    for(p = s; *p; ++p);
    c = (p - s) - 1;

    while(*s) {
        if(*s++ == '1') {
            i = 1;
            for(k = 0; k < c; ++k)//pow(2, c)
                 i *= 2;
            n += i;
        }
        --c;
    }
    return n;
}



int main(void) {
    char buf[33];
    int num = 12345;

    printf("%s\n", dec_to_bin(buf, num));
    printf("%d\n", bin_to_dec(buf));
    return 0;
}


Output:
1
2
11000000111001
12345


Create a new paste based on this one


Comments: