sitelink1  
sitelink2  
sitelink3 http://1 
sitelink4 http://ko 
sitelink5 http://blog.daum.net/kiki1/9884186 
sitelink6 http://sitelink1 

Java에서 CRC체크를 하기 위한 모듈입니다...

Java에는 java.util.zip에 속에 있는 클래스를 사용하면 32bit CRC체크를 할수 있습니다..

그러나 16bit CRC체크를 할려면.... 없죠 ^^a

그것을 체크하기 위한 프로그램 모듈 입니다.


public final class CRCCheck   

{   

        private final static int crc16Tab[] = { /* CRC polynomial 0xA001 */  

                        0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,   

                        0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,   

                        0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,   

                        0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,   

                        0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,   

                        0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,   

                        0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,   

                        0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,   

                        0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,   

                        0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,   

                        0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,   

                        0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,   

                        0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,   

                        0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,   

                        0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,   

                        0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,   

                        0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,   

                        0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,   

                        0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,   

                        0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,   

                        0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,   

                        0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,   

                        0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,   

                        0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,   

                        0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,   

                        0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,   

                        0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,   

                        0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,   

                        0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,   

                        0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,   

                        0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,   

                        0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040,   

                };   

  

        public static int crc16_Bigendian(byte[] bufIn, int charCount )   

        {   

                int crc16 = crc16Check(bufIn, charCount);   

  

                return ((crc16 << 8) & 0xFF00) | ((crc16 >> 8) & 0x00FF);   

    }   

  

  

    public static int crc16(byte[] bufIn, int charCount)   

    {   

        return crc16Check(bufIn, charCount);   

    }   

  

  

    private static int crc16Check(byte[] bufIn, int charCount)   

    {   

        int crc16;   

  

        int i = 0;   

  

        for(crc16 = 0; charCount > 0; charCount--)   

        {   

            crc16 = crc16Tab[(crc16 ^ bufIn[i++]) & 0xff] ^ (crc16 >> 0x0008);   

        }   

  

        return crc16;   

    }   

번호 제목 글쓴이 날짜 조회 수
183 Java6 에서 지원하는 Scripting (번역중) 황제낙엽 2010.05.28 553
182 RMI 시작하기(2) file 황제낙엽 2010.05.27 531
181 RMI 시작하기(1) file 황제낙엽 2010.05.27 459
180 Java Remote Method Invocation (Java RMI) 황제낙엽 2010.05.27 460
179 javax.script API 관련 스크랩 (ScriptEngine, ScriptEngineManager) 황제낙엽 2010.05.25 472
178 java.util.Properties 파일 사용 예제 file 황제낙엽 2010.04.06 452
177 10진수 <-> 16진수(Hex) 변환 file 황제낙엽 2010.03.29 1550
176 ServletConfig 이용하기 황제낙엽 2010.03.15 487
» 16비트 CRC 체크용 클래스 (사용자 클래스) 황제낙엽 2010.03.14 664
174 파일을 읽어서 CRC 값을 연산하는 메서드 (java.util.zip.CRC32) 황제낙엽 2010.03.14 456
173 byte배열에 대한 CRC 를 계산하는 메서드 (java.util.zip.CRC32) 황제낙엽 2010.03.14 2453
172 java의 List와 반복문(loop), 그리고 변수 선언 위치에 대해서 황제낙엽 2010.02.17 520
171 메모리 유출과 약한 참조 황제낙엽 2010.01.26 912
170 Methods of the Matcher Class 황제낙엽 2010.01.19 439
169 Pattern.matches() , Matcher.matches() , Matcher.find() file 황제낙엽 2010.01.19 606
168 java.lang.IllegalArgumentException 황제낙엽 2010.01.18 136541
167 org.apache.commons.fileupload.servlet.ServletFileUpload 를 이용한 파일 업로드 file 황제낙엽 2009.11.19 477
166 Error reading tld listeners java.lang.NullPointerException 황제낙엽 2009.10.14 444
165 Cannot find the tag library descriptor for “http://java.sun.com/jsp/jstl/core 황제낙엽 2009.10.14 1259
164 Transfer-Encoding: chunked VS Content-Length 황제낙엽 2009.09.17 519