Mostrar valor 0 en archivo hexadecimal

Estoy trabajando en un archivo hexadecimal y mostrar su contenido, pero si el valor tenía "0". No apareció cuando lo imprimí.

por ejemplo

 0 0 0 b7 7a 7a e5 db 40 2 0 c0 0 0 9 18 16 0 e3 1 40 0 0 3f 20 f0 1 5 0 0 0 0 0 0 41 bc 7a e5 db 40 2 0 c0 1 0 9 18 16 0 e3 1 40 0 0 3f 20 f0 1 5 0 0 0 0 0 0 53 3f 7b e5 db 40 2 0 c0 3 0 9 2 19 24 3d 0 22 68 1 db 9

Código

    String filename = "C:\\tm09888.123";
    FileInputStream in = null;
    int readHexFile = 0; 
    char hexToChar = ' ';
    String[] bytes = new String[10];

    try
    {            
        in = new FileInputStream(filename); 

        while((readHexFile = in.read()) != -1)
        {       
            if (Integer.toHexString(readHexFile).equals("f0"))
            {
                System.out.print("\n\n\n");
            }
            System.out.print(Integer.toHexString(readHexFile) + " ");
        }
    }
    catch (IOException ex)
    {
        Logger.getLogger(NARSSTest.class.getName()).log(Level.SEVERE, null, ex);
    }  

}  

Cuando imprimí el archivo, los "0" no aparecieron y valores como "c0" se convirtieron en "c".

¿Cómo reescribo el código para mostrar los "0"?

Respuesta 1

Cuando se visualiza en la pantalla, los valores "0" no aparecen y los valores como "c0" se convierten solo en "c"

Sospecho que es más probable que "0c" se convierta simplemente en "c". Esperaría que "c0" esté bien.

El problema es que está usando Integer.toHexStringlo que solo usará tantos dígitos como sea necesario. Puedes arreglar esto manualmente escribiendo:

if (readHexFile < 0x10) {
    System.out.print("0");
}

Alternativamente, solo use:

private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
...
System.out.print(HEX_DIGITS[readHexFile >> 4]);
System.out.print(HEX_DIGITS[readHexFile % 15]);
System.out.print(" ");

O incluso más simplemente:

System.out.printf("%02x ", readHexFile);

También tenga en cuenta que no es necesario convertir a una cadena hexadecimal para comparar 0xf0. Puedes usar:

if (readHexFile == 0xf0) {
    System.out.print("\n\n\n");
}
Respuesta: 2

Integer.toHexString no garantiza la devolución de un resultado de dos dígitos.

Si desea que siempre tenga dos dígitos, puede usar String.formaten su lugar:

System.out.print(String.format("%02x ", readHexFile));
Respuesta: 3

Entonces, mi profesor mencionó que una ruptura en una declaración if / if-else es un código "malo". ¿Qué quiere decir exactamente con eso? Además, ¿cómo puedo arreglar mi código que he escrito actualmente, porque lo hace ...

Tengo una secuencia de elementos sin clasificar y una secuencia de comparadores. Quiero aplicar todos los comparadores en la secuencia usando "thenComparing" (Multisort) ¿Hay una forma más elegante que la siguiente ...

Spring-boot v1.4.1 Java v1.8 Thymeleaf v2.1.5. La siguiente línea de código en mi opinión: <td th: each = "sprint: $ {sprints}" th: text = "$ {sprint.releaseDate}? $ {# Temporals.format (sprint.releaseDate, ...

Antecedentes Uso de JDK 6 para cargar archivos XML en DOM. Los archivos XML deben validarse con un XSD. La ubicación del archivo XSD difiere según el entorno en ejecución. Asegurar que el XML puede ser ...