hvem kan fortolke crc koder?
Er der nogen af jer, som kan hjælpe mig med at forstå den følgende kode, CRC.Det vil være dejligt, hvis nogen af jer kan komme op med en grundig forklaring.
På forhånd tak!
public class CRC
{
private static final int BITS = 16;
private short poly;
public CRC( short poly )
{
this.poly = poly;
}
private short register;
private void oneStep( int bit )
{
if( register < 0 )
register = (short)( ( ( register << 1 ) | bit ) ^ poly );
else
register = (short)( ( register << 1 ) | bit );
}
public short findChecksum( byte message[] )
{
register = 0;
for( int i = 0; i < message.length; ++i ) {
byte b = message[i];
for( int j = 0; j < 8; ++j ) {
if( b < 0 )
oneStep( 1 );
else
oneStep( 0 );
b = (byte) ( b << 1 );
}
}
for( int i = 0; i < BITS; ++i )
oneStep( 0 );
return register;
}
}
public class TestCRC
{
public static void main( String args[] )
{
CRC c = new CRC( (short)0x8005 );
byte m[] = { (byte)0xff };
System.out.println( "Checksum: " + toBinaryString( c.findChecksum( m ) ) );
}
private static String toBinaryString( short s )
{
String res = "";
for( int i = 0; i < 16; ++i ) {
if( s < 0 )
res += '1';
else
res += '0';
s = (short)( s << 1 );
}
return res;
}
}
