[freenet-dev] [freenet-cvs] r17694 - trunk/freenet/src/freenet/support

Matthew Toseland toad at amphibian.dyndns.org
Fri Feb 8 13:58:34 UTC 2008


Do you want >>> instead of >> ? Google for java bitwise operators...

On Friday 08 February 2008 11:09, nextgens at freenetproject.org wrote:
> Author: nextgens
> Date: 2008-02-08 11:09:14 +0000 (Fri, 08 Feb 2008)
> New Revision: 17694
> 
> Added:
>    trunk/freenet/src/freenet/support/CRC.java
> Log:
> A new class in freenet.support to compute CRCs. I will use it in the PNG 
filter
> 
> Added: trunk/freenet/src/freenet/support/CRC.java
> ===================================================================
> --- trunk/freenet/src/freenet/support/CRC.java	                        (rev 
0)
> +++ trunk/freenet/src/freenet/support/CRC.java	2008-02-08 11:09:14 UTC (rev 
17694)
> @@ -0,0 +1,44 @@
> +/* This code is part of Freenet. It is distributed under the GNU General
> + * Public License, version 2 (or at your option any later version). See
> + * http://www.gnu.org/ for further details of the GPL. */
> +package freenet.support;
> +
> +/**
> + * A class to compute CRCs complying with ISO 3309
> + * It's used in the PNG filter.
> + * 
> + * @author nextgens
> + */
> +public class CRC {
> +	public static final long[] CRC_TABLE = new long[256];
> +	public static final long PNG_POLYNOMINAL = 0xedb88320L;
> +	
> +	static {
> +		long c;
> +		for(int i=0; i<256; i++) {
> +			c = i;
> +			for(int j=0; j<8; j++) {
> +				if(0 != (c & 1))
> +					c = PNG_POLYNOMINAL^(c >> 1);
> +				else
> +					c = c >> 1;
> +			}
> +			CRC_TABLE[i] = c;
> +		}
> +	}
> +	
> +	private static long update_crc(long crc, byte[] buf) {
> +		// it can't be above 2^31-1 anyway... hence we use an int
> +		if(buf.length > Integer.MAX_VALUE)
> +			throw new IllegalArgumentException("The buffer is too big!");
> +		
> +		for (int i = 0; i < buf.length; i++)
> +			crc = CRC_TABLE[(int)(crc ^ buf[i]) & 0xff] ^ (crc >> 8);
> +		
> +		return crc;
> +	}
> +	
> +	public static long crc(byte[] input) {
> +		return update_crc(0xffffffffL, input) ^ 0xffffffffL;
> +	}
> +}
> 
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://emu.freenetproject.org/pipermail/devl/attachments/20080208/36165e81/attachment.pgp 


More information about the Devl mailing list