C语言中的char数组中的数据如何提取?

定义一个数组char table[]={0x3f,0x2d,0xf2,0xf9}如何把这个数组中的4个数的前2位取出,然后组合在一起,形成一个新的数,赋给c0变量?
比如,0x3f的前两位是00,0x2d的前两位是00,0xf2的前两位是11,0xf9的前两位是11.组合后C0就变成00001111,

    char数组其实就是指字符串

    数据如何提取要看你要提取什么数据。

    如果是单个字符:

    直接用数组的索引方式s[n]就可以提取第n+1个字符。

    如果是整个或者局部字符串:

    可以使用strcpy或strncpy函数来复制整个或者局部字符串。函数在string.h库当中。

    如果是数值类型或者其他类型:

    可以使用sscanf格式输入函数,从指定字符串按照格式读取任意类型的数据。函数sscanf在stdio.h库当中。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-29
初始化c0,c0 = 0;
通过位操作,
比如第一个0x3f,c0 = c0|(table[0]&11000000);
然后第二个0x2d,c0 = c0|(table[1]&00110000);
同理第三个0xf2,c0 = c0|(table[2]&00001100);
第四个0xf9,c0 = c0|(table[2]&00000011);
这样就ok了。
第2个回答  2014-11-29

简单的位运算 + 循环 而已

#include <stdio.h>
int main()
{
char table[]={0x3f,0x2d,0xf2,0xf9};
char var;
int i;
for(i=0, var=0x00;i<sizeof(table)/sizeof(char);i++)
{
var |= (  (table[i] & 0xc0) >> (i*2)  );
}
printf("%02x\n", var);
return 0;
}

第3个回答  推荐于2018-02-28
#include <stdio.h>
int main()
{
char c0=0;
char table[]={0x3f,0x2d,0xf2,0xf9} ;

int i;
for( i=0;i<4;i++ )
{
c0 |=( (table[i] >> 6) &0x03) ) ;
c0 <<= 2 ;
}
printf("%x\n", c0 );
return 0;
}本回答被提问者和网友采纳
相似回答