#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// Variable que guarda el tamaño del archivo en bytes
unsigned int length;
// Para que printf imprima los valores de forma correcta
// es necesario que el buffer sea unsigned char en lugar de char
unsigned char *buffer;
// Modifica la siguiente linea para abrir otro archivo
char nombre_archivo[] = "unidad.txt";
ifstream archivo(nombre_archivo, ios::binary);
if(archivo.fail())
cout << "Error al abrir el archivo " << nombre_archivo << endl;
else
{
// obtener longitud del archivo
archivo.seekg (0, ios::end);
length = archivo.tellg();
archivo.seekg (0, ios::beg);
// obtener memoria para la variable
buffer = new unsigned char [length];
// leer datos como bloque
archivo.read ((char*)(buffer),length);
archivo.close();
// imprimir cada posicion del buffer como hexadecimal
for (unsigned int i = 0; i < length; i++)
{
// 16 valores por linea, si deseas un numero diferente
// modifica i % 16
if (i % 16 == 0 && i != 0)
printf("\n");
if (buffer[i] < 16)
printf("0%X ", buffer[i]);
else
printf("%X ", buffer[i]);
}
}
return 0;
}