16进制如何转换成2进制,并以字符串形式保存2进制数?
如题,看这个:
unsigned char[] = { /* 65 0x41 'A' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ 0xc6, /* 11000110 */ 0xfe, /* 11111110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0xc6, /* 11000110 */ 0x00 /* 00000000 */ };
#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进制是主观意念...
[解决办法]
学习了
#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];删掉