首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于16进制

2012-09-23 
求助 关于16进制输入一个10进制数输出16进制数这个怎么写菜鸟求问。。。。。16进制是01方式输出[解决办法]C/C++

求助 关于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;} 

热点排行