读书人

关于16进制

发布时间: 2012-09-23 10:28:11 作者: rapoo

求助 关于16进制
输入一个10进制数
输出16进制数
这个怎么写 菜鸟求问。。。。。
16进制是01方式输出

[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>int decimal_to_binstring(void *dec, int len, char *bin, int size) {    if (bin == NULL || size < (len << 3) + 1) {        return -1;    }    int off = 0;    /* 64 or 32 ?*/    if (sizeof(long) == 4) { /* 32 */        unsigned int idec = *(unsigned int*)dec;        unsigned long long lldec = *(unsigned long long*)dec;#define TEMPLATE_CODES(val) \        while (val != 0) { \            bin[off++] = '0' + (val & 1); \            val >>= 1; \        }        switch (len) {            case 4:                TEMPLATE_CODES(idec);                break;            case 8:                TEMPLATE_CODES(lldec);                break;            default:                return -1;        }    } else {         unsigned int idec = *(unsigned int*)dec;        unsigned long ldec = *(unsigned long*)dec;        switch (len) {            case 4:                TEMPLATE_CODES(idec);                break;            case 8:                TEMPLATE_CODES(ldec);                break;            default:                return -1;        }    }    /* complete all bits '0' */    memset(bin + off, '0', (len << 3) - off);    /* reverse the binary string*/    char *left = bin;    char *right = bin + (len << 3) - 1;    while (left < right) {        char temp = *left;        *left = *right;        *right = temp;        ++ left, -- right;    }        bin[len << 3] = '\0';    return (len << 3); /*binary string's length*/}int main(int argc, char* const argv[]) {    int idec = 0x0034;    long ldec = 0x0056;    char bin[65];    if (decimal_to_binstring(&idec, sizeof(idec), bin, sizeof(bin)) != 0) {        printf("0x%x => %s\n", idec, bin);    }    if (decimal_to_binstring(&ldec, sizeof(ldec), bin, sizeof(bin)) != 0) {        printf("0x%x => %s\n", ldec, bin);    }        return 0;}
[解决办法]
那不就是输入二进制了么
C/C++ code
#include <stdio.h>void d(unsigned int n){    if (n > 0)    {        d(n / 2);        printf("%d", n % 2);    }}int main(){    int i;    scanf("%d", &i);    d(i);    printf("\n");    return 0;} 

读书人网 >C语言

热点推荐