Volcado - Ejercicio De Programacion C# Sharp

Este ejercicio consiste en crear una utilidad de "dump": un visor hexadecimal que muestra el contenido de un archivo, con 16 bytes por fila y 24 filas por pantalla. El programa debe pausar después de mostrar cada pantalla antes de mostrar las siguientes 24 filas.
En cada fila, los 16 bytes deben mostrarse primero en formato hexadecimal y luego como caracteres. Los bytes con un código ASCII menor que 32 deben mostrarse como un punto en lugar del carácter no imprimible correspondiente.
Para ver un ejemplo de cómo debería verse, puedes buscar "hex editor" en Google Imágenes. Este ejercicio implica el análisis y la visualización del contenido binario de un archivo de manera amigable para el usuario.

 Categoría

Administración de Archivos

 Ejercicio

Volcado

 Objectivo

Cree una utilidad de "volcado": un visor hexadecimal, para mostrar el contenido de un archivo, 16 bytes en cada fila, 24 archivos en cada pantalla (y luego debe detenerse antes de mostrar las siguientes 24 filas).

En cada fila, los 16 bytes deben mostrarse primero en hexadecimal y luego como caracteres (los bytes inferiores a 32 deben mostrarse como un punto, en lugar del carácter no imprimible correspondiente).

Busca "editor hexadecimal" en Google Imágenes, si quieres ver un ejemplo de la apariencia esperada.

 Ejemplo Ejercicio C#

 Copiar Código C#
// Importing necessary namespaces
using System;
using System.IO;

class HexDump
{
    // Main method where the program execution begins
    static void Main()
    {
        // File path (change this to the file you want to dump)
        string filePath = "example.bin";

        // Call the DumpFile method to display the content of the file
        DumpFile(filePath);
    }

    // Method to dump the contents of the file in hexadecimal format
    static void DumpFile(string filePath)
    {
        try
        {
            // Open the file in binary read mode
            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                // Buffer to store bytes read from the file
                byte[] buffer = new byte[16]; // 16 bytes per row
                int rowNumber = 0;
                int bytesRead;

                // Loop to read the file 16 bytes at a time
                while ((bytesRead = fs.Read(buffer, 0, 16)) > 0)
                {
                    // Print hexadecimal representation of the bytes
                    PrintHexRow(buffer, bytesRead, rowNumber);

                    // Pause after every 24 rows
                    if (++rowNumber % 24 == 0)
                    {
                        Console.WriteLine("Press any key to continue...");
                        Console.ReadKey();
                    }
                }
            }
        }
        catch (Exception ex)
        {
            // Catch any errors (like file not found) and display the error message
            Console.WriteLine("Error: " + ex.Message);
        }
    }

    // Method to print a single row of hexadecimal and ASCII characters
    static void PrintHexRow(byte[] buffer, int bytesRead, int rowNumber)
    {
        // Print row number in hexadecimal format
        Console.Write("{0:X8}: ", rowNumber * 16);

        // Print the hexadecimal bytes
        for (int i = 0; i < 16; i++)
        {
            if (i < bytesRead)
                Console.Write("{0:X2} ", buffer[i]);
            else
                Console.Write("   "); // Print empty space for incomplete rows
        }

        // Print the ASCII representation of the bytes
        Console.Write(" | ");
        for (int i = 0; i < bytesRead; i++)
        {
            // If byte is printable, show it, else print '.'
            char c = (char)buffer[i];
            Console.Write(c >= 32 && c <= 126 ? c : '.');
        }

        // Move to the next line
        Console.WriteLine();
    }
}

 Salida

00000000: 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 00 00 00 00  | Hello World!.... |
00000010: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50  | ABCDEFGHIJKLMNOP |
00000020: 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60  | QRSTUVWXYZ[\]^_` |
00000030: 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70  | abcdefghijklmnop |
Press any key to continue...

 Comparte este Ejercicio C# Sharp

 Más Ejercicios de Programacion C# Sharp de Administración de Archivos

¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.

  •  Extractor DBF

    Este ejercicio consiste en crear un programa que muestre la lista de campos almacenados en un archivo DBF. El formato DBF es utilizado por el antiguo gestor de bases de dato...

  •  Texto censurado

    Este ejercicio consiste en crear un programa que censure archivos de texto. El programa debe leer un archivo de texto y volcar su contenido a un nuevo archivo, reemplazando ...

  •  SQL a texto

    En este ejercicio, debes crear un programa en C# capaz de analizar comandos SQL de tipo INSERT y extraer sus datos en líneas de texto separadas. El programa debe proc...

  •  Visor PGM

    El formato PGM es una de las versiones de los formatos de imagen NetPBM. Específicamente, es la variante capaz de manejar imágenes en tonos de gris. Su encabezado comienza con una ...

  •  Mostrar BMP en la consola V2

    En este ejercicio, se te solicita desarrollar un programa en C# que pueda mostrar un archivo BMP de tamaño 72x24 en la consola. Para ello, deberás utilizar la ...

  •  Escribir en un archivo de texto

    En este ejercicio de C#, se debe crear un programa que pida al usuario ingresar varias oraciones (hasta que presione Enter sin escribir nada) y almacene dichas oracio...