2009-12-02 3 views
3

4 비트 CRC (Cyclic Redundancy Check)의 C# 구현을 위해 그물을 검색했지만 지금까지 성공하지 못했습니다.C#의 CRC-4 구현

나에게 CRC-4-ITU의 참조 구현을 제공 할 수있는 사람이 있습니까? 표준 다항식이있는 경우 표준 다항식을 사용하는 것이 좋습니다 (다항식의 정의를 찾지 않고 CRC4 사양으로 pointed to by wikipedia 사양을 읽었습니다).

또한 CRC4 구현을 확인하기 위해 테스트 스위트 또는 테스트 데이터의 일부를 정말 감사하게 생각합니다.

감사합니다.

+3

예수 그리스도는 무서워합니다. 이것은 "CRC-4-ITU"에 대한 Google의 6 번째 검색 결과이며 게시 된 지 7 분 후에 색인이 생성됩니다. –

+1

Google과 SO에는 일종의 계약이 있습니다. 단순히 SiteMap 파일 일 수 있으며 SO에 높은 GoogleRank가 있으므로 MyLittleDorkySite.com보다 더 중요합니다. –

답변

2

위키피디아의 Cyclic Redundancy Check 기사에 따르면 다항식은 x^4 + x + 1입니다. 체크섬 계산 방법에 대한 설명도 있습니다.

다음은 CRC16 알고리즘입니다. 나는 네가 요구 한 것이 아니라는 것을 안다. 그러나 그것을 4 비트에 맞추는 것은 상대적으로 간단해야한다.

public ushort calculate(byte[] bytes) 
    { 
     int crc = 0xFFFF; // initial value 
     // loop, calculating CRC for each byte of the string 
     for (int byteIndex = 0; byteIndex < bytes.Length; byteIndex++) 
     { 
      ushort bit = 0x80; // initialize bit currently being tested 
      for (int bitIndex = 0; bitIndex < 8; bitIndex++) 
      { 
       bool xorFlag = ((crc & 0x8000) == 0x8000); 
       crc <<= 1; 
       if (((bytes[byteIndex] & bit)^(ushort)0xff) != (ushort)0xff) 
       { 
        crc = crc + 1; 
       } 
       if (xorFlag) 
       { 
        crc = crc^0x1021; 
       } 
       bit >>= 1; 
      } 
     } 
     return (ushort)crc; 
    } 
또한

http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_24775723.html

는 계산 체크섬이 가이드가 :

http://www.ross.net/crc/download/crc_v3.txt

"당신은 CRC 알고리즘에 대해 알고 싶었지만, 두려움을 요청하는 두려워 모든 것을 이해 상 오류가있을 수 있습니다. "

+0

이 멋진 도구는 임의의 다항식에 대한 C 코드를 생성합니다! (10011을 원함) C#으로 변환하기 쉬워야합니다 : https://ghsi.de/CRC/index.php –