Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/07/2008, 11:07
Avatar de Xinef
Xinef
 
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 2 meses
Puntos: 7
Respuesta: Programa CRC 2

Cita:
Iniciado por bonethugs Ver Mensaje
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 ((
lector.read()) != -1) {        
                
System.out.println("*: " b);
                for (
int i 08i++) {
                    
boolean bit = ((>> (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.