16进制如何转换成2进制,并以字符串形式保存2进制数?
如题,看这个:
- C/C++ code
unsigned char[] = { /* 65 0x41 'A' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ 0xc6, /* 11000110 */ 0xfe, /* 11111110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0x00 /* 00000000 */ };如何转换成右边注释中的字符串?字符串中保存着该16进制数的2进制数。
[解决办法]
占位学本领啊
[解决办法]
itoa
[解决办法]
- C/C++ code
#include <stdio.h>#include <stdlib.h>unsigned char h[] = { /* 65 0x41 'A' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ 0xc6, /* 11000110 */ 0xfe, /* 11111110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0x00 /* 00000000 */ };char b[8][9];char s[9];int i;void main() { for (i=0;i<8;i++) { sprintf(b[i],"%08s",ltoa(h[i],s,2)); } for (i=0;i<8;i++) { printf("%s\n",b[i]); }}//00111000//01101100//11000110//11111110//11000110//11000110//11000110//00000000
[解决办法]
计算机只认识二进制... 你所说的16进制是主观意念...
[解决办法]
学习了
[解决办法]
赵老师威武...
[解决办法]
写个转换函数也是可行的啊。
[解决办法]
[解决办法]
- C/C++ code
#include <stdio.h>unsigned char h[] = { /* 65 0x41 'A' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ 0xc6, /* 11000110 */ 0xfe, /* 11111110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0x00 /* 00000000 */ };char b[8][9];char s[9];int i,j;void main() { for (i=0;i<8;i++) { for (j=0;j<8;j++) { b[i][8-j]=(h[i]&(1<<j))?'1':'0'; } b[i][8]=0; } for (i=0;i<8;i++) { printf("%s\n",b[i]); }}//00111000//01101100//11000110//11111110//11000110//11000110//11000110//00000000
[解决办法]
纠正上帖:
b[i][8-j]=(h[i]&(1<<j))?'1':'0';
应改为
b[i][7-j]=(h[i]&(1<<j))?'1':'0';
[解决办法]
char s[9];删掉