/** * @author (Alfred Hermes) * @version (2003, dec) */ public class Regel { private String[] muster = {"111","110","101","100","011","010","001","000"}; private byte[] ersetzung={0,0,0,0,0,0,0,0}; public Regel(){}; public Regel(int nr){ waehleRegel(nr); } public void waehleRegel(int nr){ nr = nr % 256; int stellenwert = 128; for (int k = 0; k <8; k++){ if (nr >= stellenwert){ ersetzung[k] = 1; nr = nr - stellenwert; } else{ ersetzung[k] = 0; } stellenwert = stellenwert / 2; } /* String s = Integer.toBinaryString(nr); while (s.length() < 8) { s = "0"+s; } for (int k = 0; k < 8; k++){ if(s.charAt(k) == '0') ersetzung[k]=0; else ersetzung[k]=1; } */ } private byte liesErsetzungZu(int zahl){ if(zahl>=0 && zahl <=7){ return ersetzung[7-zahl]; } else { System.out.println("Fehler bei der Mustersuche"); return -1; } } /* public byte[] wendeAn(byte[] s0){ byte[] s1=new byte[s0.length]; byte wert=0; for (int k=1; k < s0.length-1; k++){ wert = liesErsetzungZu(4*s0[k-1]+2*s0[k]+s0[k+1]); if(k==1) s1[0]=wert; s1[k] = wert; } s1[s0.length-1]=wert; return s1; } */ public byte[] wendeAn(byte[] s0){ byte[] s1=new byte[s0.length]; for (int k=1; k < s0.length-1; k++){ int index = 7-(4*s0[k-1]+2*s0[k]+s0[k+1]); s1[k] = ersetzung[index]; } s1[s0.length-1] = s1[s0.length-2]; s1[0] = s1[1]; return s1; } //----------- public byte[] liesErsetzungen(){return ersetzung;} public String[] liesMuster(){ return muster;} }