将2比特数据压缩为1比特数据:
方法比较傻,但是是原创:
//每2个byte合并成1个byte
void Byte2byte(u8 *p,u16 num,u8* pvalue)
{
u8 i,j,k,s;
u8 a[300];
u8 b[300];
u8 c[300];
u8 d[300];
u8 e[300];
/
u8 f[300];
u8 h[300];
u8 m[300];
u8 n[300];
for(i=0,j=1,k=0;(i<num)&&(j<num)&&(k<num/2);i=i+2,j=j+2,k++)
{
//左移
a[i]=p[i]<<1;
b[i]=p[i]<<2;
c[i]=p[i]<<3;
d[i]=p[i]<<4;
a[i]=a[i]&0x80;
b[i]=b[i]&0x40;
c[i]=c[i]&0x20;
d[i]=d[i]&0x10;
e[i]=a[i]|b[i]|c[i]|d[i];
/***********************************************/
//右移
f[j]=p[j]>>3;
h[j]=p[j]>>2;
m[j]=p[j]>>1;
f[j]=f[j]&0x08;
h[j]=h[j]&0x04;
m[j]=m[j]&0x02;
n[j]=f[j]|h[j]|m[j]|(p[j]&0x01);
/***********************************************/
pvalue[k]=e[i]|n[j];
}
}