int crc_8( unsigned char *source , int number , unsigned char *ret_crc)

{

   int i, j ;

   unsigned char crc, ch;

   *ret_crc = 0;


   for ( i = 0 ; i < number ; i++ ) {

      ch = *(source + i);

      crc = *ret_crc;


      for ( j = 0 ; j < 8 ; j++ ) 

      {

          if ( crc & 0x80 ) 

          {

              crc<<=1;

              if ( ch & 0x80 ) 

              {

                   crc = crc | 0x01;

              } 

              else 

              {

                   crc =crc & 0xfe;

              } 

              crc = crc ^ 0x107;

          } 

          else 

          {

              crc<<=1;

              if ( ch & 0x80 ) 

              {

                   crc = crc | 0x01;

              } 

              else 

              {

                   crc = crc & 0xfe;

              }

          }

          ch<<=1;

      }

      *ret_crc = crc;

   } 


   ch = 0;


   for ( j = 0 ; j < 8 ; j++ ) 

   {

      if ( crc & 0x80 ) 

      {

          crc<<=1;

          if ( ch & 0x80 ) 

          {

             crc = crc | 0x01;

          } 

          else 

          {

             crc =crc & 0xfe;

          } 

          crc = crc ^ 0x107;

      } 

      else 

      {

          crc<<=1;

          if ( ch & 0x80 ) 

          {

             crc = crc | 0x01;

          } 

          else 

          {

             crc = crc & 0xfe;

          }

       }

       ch<<=1;

    }

}


crc 공부중인데 책으로 이론적으로 보면서 직접 계산하고 이론상 뭐 어떻게 굴러가는진 대충 알겠는데


이걸 프로그래밍으로 짜려고 하니 갈피를 못잡겠어요. 


그래서 인터넷 뒤지면서 소스도 찾아보고 하는데 


내 대가리 속에 든 crc 계산방법이랑 이미지 매칭이 안되서 소스가 이해가 안갑니다.


질문을 상세하게 막 쓰고 싶은데 너무 막연하게 뜬구름 잡는 느낌이라... 애매해서 그런데


저 소스 간략하게 나마 어떤식으로 굴러가는건지 알려주실 착한 형님 계시나요///