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 계산방법이랑 이미지 매칭이 안되서 소스가 이해가 안갑니다.
질문을 상세하게 막 쓰고 싶은데 너무 막연하게 뜬구름 잡는 느낌이라... 애매해서 그런데
저 소스 간략하게 나마 어떤식으로 굴러가는건지 알려주실 착한 형님 계시나요///
여자 이쁘네. 누구임?
if(crc & 0x80) { crc <<= 1; crc |= 1; } else { crc <<= 1; crc &= 0xfe; } 는 비트 회전(circular shift left) 연산인데 저기선 좀 이상하게 짜져 있네? 저거 맞는 코드이긴 함?
http://autogram.tk/이
중고차 어플리케이션 어떤가요?