c语言数据转换问题?高手进

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:36:57
数据格式是ASCII
如:0x31 0x31 0x31 0x31 0x31 0x31
先要得到十进制:111111 (就是把0x31转换成1) 这个我会的
但是,再把111111十进制的数,变换为十六进制的0x1b207
变换后如何得到0x01 0xb2 0x07,把这三个数据放入数组中?如何做?

char *str="111111";
int i=atoi(str);
int *p;
int a[3];
a[0]=i&0xff;
a[1]=(i&0xff00)>>8;
a[2]=(i&0xff0000)>>16;
其实转化成int 的时候在内存中已经是二进制存取了,比如:111111 的内存表示形式为0x0001b207 这时候只需要对相应的移位操作就可以了。。。

char a[] = {0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0};
char b[4];

*(int *)b = atoi(a);

int可不分什么十进制和十六进制,printf的时候你可以自由选择以什么进制显示,都忘了?
与掩码再移位是把数字分段显示的好办法.