misc/libphysfs/lzma/Java/SevenZip/CRC.java
changeset 13881 99b265e0d1d0
parent 13880 5f819b90d479
child 13882 b172a5d40eee
equal deleted inserted replaced
13880:5f819b90d479 13881:99b265e0d1d0
     1 // SevenZip/CRC.java
       
     2 
       
     3 package SevenZip;
       
     4 
       
     5 public class CRC
       
     6 {
       
     7 	static public int[] Table = new int[256];
       
     8 	
       
     9 	static
       
    10 	{
       
    11 		for (int i = 0; i < 256; i++)
       
    12 		{
       
    13 			int r = i;
       
    14 			for (int j = 0; j < 8; j++)
       
    15 				if ((r & 1) != 0)
       
    16 					r = (r >>> 1) ^ 0xEDB88320;
       
    17 				else
       
    18 					r >>>= 1;
       
    19 			Table[i] = r;
       
    20 		}
       
    21 	}
       
    22 	
       
    23 	int _value = -1;
       
    24 	
       
    25 	public void Init()
       
    26 	{
       
    27 		_value = -1;
       
    28 	}
       
    29 	
       
    30 	public void Update(byte[] data, int offset, int size)
       
    31 	{
       
    32 		for (int i = 0; i < size; i++)
       
    33 			_value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8);
       
    34 	}
       
    35 	
       
    36 	public void Update(byte[] data)
       
    37 	{
       
    38 		int size = data.length;
       
    39 		for (int i = 0; i < size; i++)
       
    40 			_value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8);
       
    41 	}
       
    42 	
       
    43 	public void UpdateByte(int b)
       
    44 	{
       
    45 		_value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8);
       
    46 	}
       
    47 	
       
    48 	public int GetDigest()
       
    49 	{
       
    50 		return _value ^ (-1);
       
    51 	}
       
    52 }