Cree un visor hexadecimal en Java que muestre el contenido de un archivo binario en pantalla de la siguiente manera:
Los 16 bytes se mostrarán primero en hexadecimal y luego como caracteres imprimibles. Además deberás sustituir los bytes menores a 32 (caracteres no imprimibles) por puntos.
Muestre en pantalla 24 filas de 16 bytes cada vez que el usuario presione Enter.
00000000 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 MZ?.........ÿÿ.. 00000010 b8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ¸.......@....... 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 ............?... 00000040 0e 1f ba 0e 00 b4 09 cd 21 b8 01 4c cd 21 54 68 ..º..´.Í!¸.LÍ!Th 00000050 69 73 20 70 72 6f 67 72 61 6d 20 63 61 6e 6e 6f is program canno 00000060 74 20 62 65 20 72 75 6e 20 69 6e 20 44 4f 53 20 t be run in DOS 00000070 6d 6f 64 65 2e 0d 0d 0a 24 00 00 00 00 00 00 00 mode....$....... 00000080 50 45 00 00 4c 01 03 00 b2 7c cd cf 00 00 00 00 PE..L...²|ÍÏ.... 00000090 00 00 00 00 e0 00 22 00 0b 01 30 00 00 0a 00 00 ....à."...0..... 000000a0 00 08 00 00 00 00 00 00 66 28 00 00 00 20 00 00 ........f(... .. 000000b0 00 40 00 00 00 00 40 00 00 20 00 00 00 02 00 00 .@....@.. ...... 000000c0 04 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 ................ 000000d0 00 80 00 00 00 02 00 00 00 00 00 00 03 00 60 85 .?............`? 000000e0 00 00 10 00 00 10 00 00 00 00 10 00 00 10 00 00 ................ 000000f0 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 ................ 00000100 13 28 00 00 4f 00 00 00 00 40 00 00 bc 05 00 00 .(..O....@..¼... 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000120 00 60 00 00 0c 00 00 00 6c 27 00 00 38 00 00 00 .`......l''..8... 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000150 00 00 00 00 00 00 00 00 00 20 00 00 08 00 00 00 ......... ...... 00000160 00 00 00 00 00 00 00 00 08 20 00 00 48 00 00 00 ......... ..H... 00000170 00 00 00 00 00 00 00 00 2e 74 65 78 74 00 00 00 .........text...
import java.io.*; public class VisorHexadecimal { public static void main(String[] args) { final int TAMANO_BUFFER = 16; String nombreArchivo = "app.exe"; try (FileInputStream archivo = new FileInputStream(nombreArchivo)) { byte[] datos = new byte[TAMANO_BUFFER]; int cantidad; int c = 0; StringBuilder lineaHexadecimal = new StringBuilder(); StringBuilder lineaCaracteres = new StringBuilder(); do { System.out.print(ToHex(archivo.getChannel().position(), 8)); System.out.print(" "); cantidad = archivo.read(datos, 0, TAMANO_BUFFER); for (int i = 0; i < cantidad; i++) { System.out.print(ToHex(datos[i], 2) + " "); if (datos[i] < 32) { lineaCaracteres.append("."); } else { lineaCaracteres.append((char) datos[i]); } } for (int i = cantidad; i < TAMANO_BUFFER; i++) { System.out.print(" "); } System.out.println(lineaCaracteres.toString()); lineaCaracteres.setLength(0); c++; if (c == 24) { System.out.println("Presiona Enter para continuar..."); try { System.in.read(); } catch (Exception e) { e.printStackTrace(); } c = 0; } } while (cantidad == TAMANO_BUFFER); } catch (IOException e) { e.printStackTrace(); } } public static String ToHex(long n, int digits) { String hex = String.format("%0" + digits + "X", n); return hex; } }
Haz clic aquí para ver la solución del ejercicio
Compártelo en tus redes sociales y desafía a tus amigos a resolver problemas de programación. Juntos, podemos aprender y crecer.
El codigo se ha copiado correctamente en el portapapeles.
Continua mejorando tus habilidades de programación en Java con nuestra selección de ejercicios prácticos de la lección. ¡Haz clic en Practicar y desafía tus conocimientos!
Cree un programa en Java que lea las etiquetas de la especificación ID3 v1 desde un archivo de música MP3.
Cree un programa en Java para leer las dimensiones de una imagen con formato Windows bitmap.
Cree un programa en Java para cifrar una imagen con formato Windows bitmap.
Cree un programa en Java que invierta todos los bytes de un archivo binario.
Cree un programa en Java que realice copias de archivos tanto de texto como binarios.
Cree un programa en Java que divida archivos de texto o binarios en partes de 5 Kb cada una.
Cree un visor hexadecimal en Java que muestre el contenido de un archivo binario en pantalla de la siguiente manera.
Practica con ejercicios en Java para gestionar ficheros binarios. Aprende como crear, actualizar y buscar de diferentes formas en archivos binarios.
Curso de programación gratuito con ejercicios y soluciones prácticas en C#. ¡Comienza a aprender ahora mismo!
Lleva tus lecciones de Exercises C# a todas partes con nuestra aplicación para Android. Descárgala ahora desde Google Play.
Utilizamos cookies propias y de terceros para mejorar nuestros servicios. Si continua navegando, consideramos que acepta su uso.