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