home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / java / util / crc16.java < prev    next >
Text File  |  1995-08-11  |  2KB  |  60 lines

  1. /*
  2.  * @(#)CRC16.java    1.4 95/03/17 Chuck McManis
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package java.util;
  21.  
  22. /**
  23.  * The CRC-16 class calculates a 16 bit cyclic redundancy check of a set
  24.  * of bytes. This error detecting code is used to determine if bit rot
  25.  * has occured in a byte stream.
  26.  */
  27.  
  28. public class CRC16 {
  29.  
  30.     /** value contains the currently computed CRC, set it to 0 initally */
  31.     public int value;
  32.  
  33.     public CRC16() {
  34.     value = 0;
  35.     }
  36.  
  37.     /** update CRC with byte b */
  38.     public void update(byte aByte) {
  39.     int a, b;
  40.  
  41.     a = (int) aByte;
  42.     for (int count = 7; count >=0; count--) {
  43.         a = a << 1;
  44.             b = (a >>> 8) & 1;
  45.         if ((value & 0x8000) != 0) {
  46.         value = ((value << 1) + b) ^ 0x1021;
  47.         } else {
  48.         value = (value << 1) + b;
  49.         }
  50.     }
  51.     value = value & 0xffff;
  52.     return;
  53.     }
  54.  
  55.     /** reset CRC value to 0 */
  56.     public void reset() {
  57.     value = 0;
  58.     }
  59. }
  60.