C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[36578] 다항식이 0x85 일때 CRC-8 계산?
ktiger [] 4066 읽음    2004-08-03 12:13
아래와 같이 했는데 원하는 값이 않나오네요. 고수님들 어디가 잘못된건지 봐주세요.

polynimial G(x) = 0x85 = 1000 0101, 8 Bit CRC 계산입니다.
data[2]={0x31,0x41} 일때 즉, "1A" 이면 CRC= 0x62 가 나와야 됨.
data[2]={0x31,0x44} 일때,  "1D"이면 CRC=0x40 가 나와야 됨.

#define HEC_GENERATOR   0x85   // 키값

static unsigned char syndrome_table[256]; // CRC 테이블

void gen_syndrome_table()  // CRC Table 생성
{
   register int i, j, syndrome;
   for ( i = 0;  i < 256;  i++ )
   {
       syndrome = i;
       for ( j = 0;  j < 8;  j++ )
       {
           if ( syndrome & 0x80 )
              syndrome = ( syndrome << 1 ) ^ HEC_GENERATOR;
           else
              syndrome = ( syndrome << 1 );
       }
       syndrome_table[i] = (unsigned char) syndrome;
   }
}

unsigned char CalCRC(unsigned char data, int len)  // CRC 계산
{
     register unsigned char hec_accum = 0;
     register int k;
     for ( k = 0;  k < len;  k++ )
         hec_accum = syndrome_table [ hec_accum ^ data[k] ];
     return hec_accum;
}

+ -

관련 글 리스트
36578 다항식이 0x85 일때 CRC-8 계산? ktiger 4066 2004/08/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.