본문 바로가기
Study/JAVA

CRC16CCITT JAVA code

by Answer Choi 2016. 10. 11.
반응형

CRC 검사중에 CRC16CCITT도 여러종류가 있습니다.


Online CRC Calculation


위 링크를 따라 가 보시면 여러종류의 crc 계산을 하실 수 있습니다.


그리고 아래는 JAVA용 crc 코드입니다.(netty라서 ByteBuf를 받았는데 이부분은 수정하시면 될듯)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private  static final int POLYNOMIAL = 0x1021;
private  static final int PRESET_VALUE = 0x0000;
 
public static int crc16Xmodem(ByteBuf chkdata) {
        
    int length;
    chkdata.readerIndex(1);
    int crc = PRESET_VALUE;
 
    for (int i = 0; i < length; i++) {
        int b = (chkdata.readByte() & 0xff);
        for (int j = 0; j < 8; j++) {
            boolean bit = ((b >> (7 - j) & 1== 1);
            boolean c15 = ((crc >> 15 & 1== 1);
            crc <<= 1;
            if (c15 ^ bit)
                crc ^= POLYNOMIAL;
        }
    }
    crc &= 0xffff;
    return crc;
}
cs


그리고 Line 6 : 여긴 계산할 바이트 버퍼의 수입니다.


Line 1과 Line 2는 원하는 CRC종류에 따라 변경해 주시면 됩니다.


(출처 : http://stackoverflow.com/questions/4455257/crc16-checksum-hcs08-vs-kermit-vs-xmodem)


저는 XModem이라 polynomial은 0x1021, initial value(preset value)는 0x0000을 사용하였습니다.



반응형

'Study > JAVA' 카테고리의 다른 글

JAVA 프로젝트 JAR로 실행하기!!  (1) 2017.02.23
timestamp로 SimpleDateFormat사용하기  (1) 2016.10.11
JAVA에서 MySQL 사용하기2 - 사용예제  (0) 2016.10.11
JAVA에서 MySQL 사용하기1-준비  (0) 2016.10.11
FrogJmp  (0) 2016.07.12

인기글