* Matthew Toseland <toad at amphibian.dyndns.org> [2008-02-08 13:58:34]:

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

In fact java.util.zip.CRC32 does the same job... I've deleted the class
and apologize for having attempted to re-invent the wheel.

> 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
> > 
> > 



> _______________________________________________
> Devl mailing list
> Devl at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080209/391525f8/attachment.pgp>

Reply via email to