CRC-16 값을 확인하는 데 도움이 필요합니다 (CRC-32 값과 관련하여 도움이 필요함). 나는 앉아서 CRC가 어떻게 작동하는지 이해하려고 노력했지만 빈 그림을 그렸습니다.CRC-16 및 CRC-32 검사
첫 번째 문제는 온라인 계산기를 사용하여 CRC16 = 12AC에 "BD001325E032091B94C412AC
"메시지를 계산할 때 발생합니다. 설명서에 마지막 두 옥텟은 CRC16 값이므로 "BD001325E032091B94C4
"을 http://www.lammertbies.nl/comm/info/crc-calculation.html 사이트에 입력하고 12AC 대신 5A90을받습니다.
아무도 왜이 값이 다른지, 그리고 CRC16 및 CRC32 값을 계산하는 방법에 대한 코드를 찾을 수 있습니까 (나중에 어떻게 할 것인지 배우려하지만 시간은 지금 허용되지 않습니다)?
좀 더 메시지는 다음과 같습니다 : 좀 더 정보를 포함했다
16000040FFFFFFFF00015FCB
3C00003144010405E57022C7
BA00001144010101B970F0ED
3900010101390401B3049FF1
09900C800000000000008CF3
8590000000000000000035F7
00900259025902590259EBC9
0200002B00080191014BF5A2
BB0000BEE0014401B970E51E
3D000322D0320A2510A263A0
2C0001440000D60000D65E54
--Edit--
. 내가 참조했던 문서는 TIA-102.BAAA-A (TIA 표준)입니다. 사용자 정보 및/또는 패드 옥텟의
패킷의 마지막 블록 단계는 여러 옥텟, 4 옥텟 다음 : 다음은 문서 상태는 (가능한 한 많은 저작권 침해를 피하기 위해 노력하고) 무엇인가 CRC 패리티 검사. 이를 패킷 CRC라고합니다.
패킷 CRC가 옥텟 상기 중간 블록에 포함되는 데이터와 마지막 블록의 사용자 정보의 옥텟 온통 부호화 4 옥텟 순환 중복 검사이다. 구체적인 계산 방법은 다음과 같습니다.
k를 패킷 CRC가 계산되는 사용자 정보 및 패드 비트의 총 수라고 가정합니다. 0 번째 메시지의 MSB를 x^k-1로, 마지막 메시지 옥텟의 LSB를 x^k-1로 결합하여 k 번째 메시지 비트를 다항식 M (x) 0. 생성 다항식 GM (x) 및 반전 다항식 IM (x)을 정의하십시오.
GM (x) = x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + X^ 4 + X^2 + X + 1
IM (X) = X^31 + 30 + X^X^29 + ... + X^2 + X +1
패킷 CRC 다항식 FM (x)는 다음 공식을 사용하여 계산됩니다.
FM (X) = (X^32 M (x)를 개조 GM (X)) + IM (X) 모듈로 2, 즉 GF (2)
FM 계수
가 (x)는 X^(31)에 대응하는 CRC의 제 0 옥텟의 MSB와 함께 CRC 필드 배치에 대응하는 CRC 세 번째 옥텟의 LSB X^0.
위의 인용문에서 인용 할 때 서식이 동일하게 유지되지 않으므로 ^
에 권력을 표시했습니다. 나는 무엇이 어떻게 될지는 모르지만 이것이 도움이됩니까?
여기서 12AC 값을 얻었습니까? –
BD001325E032091B94C412AC의 마지막 2 바이트. 예제 블록을 보면 마지막 두 바이트가 항상 체크섬 인 것처럼 보입니다. – egrunin
다른 CRC-16 값이있을 수 있으며, 이는 전적으로 다항식에 따라 다릅니다. – ken2k