需求:

       有256点数据,每个点有两个取值范围,0表示黑色,1表示白色,然后要把这256个点打包成32个BYTE。

 


void make_data_package(char buff[] , long out[])
{
    char tempBuffer[8] = {0};
    char *end ;

    for (int i=0 , targetIndex =0, tIndex =0; i<256; i++ , tIndex++ )
    {
        if( tIndex >=8 )
            tIndex = 0;

        tempBuffer[tIndex] = buff[i];
        printf("%c  " ,  tempBuffer[tIndex]);

        if ( (i+1) % 8 ==0) {
            printf("\n");
            out[targetIndex] =strtol(tempBuffer, &end, 2);
            //printf("\nout[%d] = %lx \n" , targetIndex ,out[targetIndex] );
            targetIndex++;
        }
    }

}

运行结果:

0  1  1  1  1  1  1  1  
1  1  0  1  1  1  1  1  
1  1  1  1  0  1  1  1  
1  1  1  1  1  1  0  1  
1  1  1  1  1  1  1  1  
0  1  1  1  1  1  1  1  
1  1  0  1  1  1  1  1  
1  1  1  1  0  1  1  1  
1  1  1  1  1  1  0  1  
1  1  1  1  1  1  1  1  
0  1  1  1  1  1  1  1  
1  1  0  1  1  1  1  1  
1  1  1  1  0  1  1  1  
1  1  1  1  1  1  0  1  
1  1  1  1  1  1  1  1  
0  1  1  1  1  1  1  1  
1  1  0  1  1  1  1  1  
1  1  1  1  0  1  1  1  
1  1  1  1  1  1  0  1  
1  1  1  1  1  1  1  1  
0  1  1  1  1  1  1  1  
1  1  0  1  1  1  1  1  
1  1  1  1  0  1  1  1  
1  1  1  1  1  1  0  1  
1  1  1  1  1  1  1  1  
0  1  1  1  1  1  1  1  
1  1  0  1  1  1  1  1  
1  1  1  1  0  1  1  1  
1  1  1  1  1  1  0  1  
1  1  1  1  1  1  1  1  
0  1  1  1  1  1  1  1  
1  1  0  1  1  1  1  1  
7f df f7 fd 
ff 7f df f7 
fd ff 7f df 
f7 fd ff 7f 
df f7 fd ff 
7f df f7 fd 
ff 7f df f7 
fd ff 7f df