@Override public String toString() { final StringBuilder b = new StringBuilder(); final String tableFormat = String.format("T%d_", Integer.numberOfTrailingZeros(tables[0].length)) + "%d"; final String startFormat = " private static final int "+tableFormat+"_start = %d*256;"; for (int j = 0; j < tables.length; j++) { b.append(String.format(startFormat, j, j)); b.append("\n"); } b.append(" private static final int[] T = new int[] {"); for(final String s : toStrings(tableFormat)) { b.append("\n"); b.append(s); } b.setCharAt(b.length() - 2, '\n'); b.append(" };\n"); return b.toString(); }
/** Generate CRC-32 lookup tables */ public static void main(final String[] args) throws FileNotFoundException { if (args.length != 1) { System.err.println("Usage: " + Table.class.getName() + " <polynomial>"); System.exit(1); } final long polynomial = Long.parseLong(args[0], 16); final int i = 8; final Table t = new Table(i, 16, polynomial); final String s = t.toString(); System.out.println(s); //print to a file final PrintStream out = new PrintStream( new FileOutputStream("table" + i + ".txt"), true); try { out.println(s); } finally { out.close(); } } }