0
필자는 응용 프로그램을 작성하기 위해 CRC 검사가 필요하다. 그러나 온라인 코드와 계산기에 대해 무엇이 잘못되었는지를 파악할 수 없다. 나는 그것을 정확하게 이해하지 못할 수도 있습니다. 이것은 내가 필요한 것입니다 :안드로이드 CRC-CCITT
그것은 반전 입력 비트 순서로 0xFFFF의 시작 값으로 CRC-CCITT를 사용합니다. 예를 들어 장치 유형 가져 오기 메시지는 0x01, 0x06, 0x01, 0x00, 0x0B, 0xD9입니다. CRC는 0xD90B입니다.
그리고 이것은 사용하여 코드 임입니다 :
public static int CRC16CCITT(byte[] bytes) {
int crc = 0xFFFF; // initial value
int polynomial = 0x1021; // 0001 0000 0010 0001 (0, 5, 12)
for (byte b : bytes) {
for (int i = 0; i < 8; i++) {
boolean bit = ((b >> (7-i) & 1) == 1);
boolean c15 = ((crc >> 15 & 1) == 1);
crc <<= 1;
if (c15^bit) crc ^= polynomial;
}
}
crc &= 0xffff;
//System.out.println("CRC16-CCITT = " + Integer.toHexString(crc));
return crc;
임 안드로이드 장치를 쓰기 때문에 자바에 있어야합니다.