Cita:
Iniciado por bonethugs El siguiente programa calcula el CRC16 CCITT de los valores introducidos por teclado.
Lo que quiero saber es si alguien me podria ayudar a modificarlo de tal forma que el programa en vez de coger los valores por teclado, se le pueda introducir el nombre de un fichero con los datos para calcular su CRC.
Código PHP:
import java.io.*;
class CRC {
public static void main(String[] args) {
codificador cod = new codificador();
cod.Leefichero("prueba4.hex");
}
}
class codificador {
public void Leefichero(String fichero) {
int crc = 0xFFFF;
int polynomial = 0x1021;
try {
InputStream lector = new BufferedInputStream(new FileInputStream(fichero));
int b;
while ((b = lector.read()) != -1) {
System.out.println("*: " + b);
for (int i = 0; i < 8; i++) {
boolean bit = ((b >> (7-i) & 1) == 1);
boolean c15 = ((crc >> 15 & 1) == 1);
crc <<= 1;
if (c15 ^ bit) {
crc ^= polynomial;
}
}
crc &= 0xffff;
}
lector.close(); //Cierra el fichero y lo libera de la memoria
} catch (Exception e) { //Código que se ejecuaría si fallara el codigo del try
System.out.println("Error: " + e);
System.exit(1);
}
System.out.println("CRC = " + Integer.toHexString(crc));
}
}
Lo he probado con el código CRC que ponía de ejemplo, en un archivo de 9bytes:
31 30 33 34 35 36 37 y funciona.