Tengo el siguiente código que lee un bmp byte a byte en java y que lo muestre en hexadecimal, pero los negativos me los muestra mal. ¿Como puedo hacer para que se muestre bien?, por ejemplo el tercer byte debería ser F2 y muestra
ffffff2.
Código:
package leerbmp;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
public class LeerBmp {
public static void main(String[] args) {
int contador=0;
try{
FileInputStream archivo = new FileInputStream("prueba.bmp");
BufferedInputStream buff = new BufferedInputStream(archivo);
DataInputStream datos = new DataInputStream(buff);
try{
while (true){
int in = datos.readByte();
System.out.printf("%d - %h - %d \n",contador++, in,in);
}
}catch(EOFException eof){
buff.close();
}
}catch(IOException e){
System.out.println("Error " + e.toString());
}
}
}
Lo que muestra:
Contador - Hexadecimal - Decimal
0 - 42 - 66
1 - 4d - 77
2 - fffffff2 - -14
3 - 6 - 6
4 - 0 - 0
5 - 0 - 0
Saludos y gracias.