64,637
社区成员
发帖
与我相关
我的任务
分享
int main()
{
byte a[5];
unsigned short b;
//输入 a
//.....
int srcbits[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18};
int dstbits[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18};
int i,srcbyte,cursrcbit,curdstbit;
for(b=0,i=0;i<16;i++)
{
srcbyte=srcbits[i] /8;
cursrcbit =srcbits[i] %8;
curdstbit = dstbits[i];
b|=( (unsigend short) ((a[srcbyte] >> cursrcbit) &1) ) << curdstbit;
}
return 0;
}
//单独设置,short或者unsigned short 的某一位,置1操作
void SetBit(unsigned short *dst,byte src[],int dstBit,int srcBit){
*dst |= (unsigned short)( (a[srcBit/8] >> (srcBit %8))&1)<<dstBits;
}
void ClrBit(unsigned short *dst,byte src[],int dstBit,int srcBit){
*dst &= ~((unsigned short)( (a[srcBit/8] >> (srcBit %8))&1)<<dstBits);
}
b &= ~3;
b |= (a[0] >> 1) & 3;
不对额, 我说的是第一1个字节的第1位,第2位 ,取出这2位来赋值给 b的 第0为何第1位。
[/quote]
unsigned char a[5];
unsigned short b;
...
b = a[0] | (a[1] << 8);