(c ++) Lee el archivo .dat como hexadecimal usando ifstream

Este es mi primer post, lo siento si rompo cualquier regla no escrita. : P Soy un programador principiante / intermedio y necesito ayuda con este programa.

Estoy tratando de infilar / leer / ifstream (lo que sea) un archivo .dat como HEX en una cadena grande.

No quiero leerlo como texto. Quiero el formato hexadecimal para poder buscar a través de la cadena y hacer cambios en él. (Como un editor hexadecimal automático)

ex. mi archivo "00000000.dat" tiene un tamaño de ~ 7kb.

En el editor hexadecimal, el hexágono se ve así:

0A 00 00 0A 00 05 4C 65 76 65 6C 07 00 06 42 6C 6F 63 6B 73 00 00 80 00 07 FF 39
01 FF 03 03 02 FF 3F 00 07 FF 39 01 FF 03 03 02 FF 3F 00 07 FF 39 01 FF 03 03 02
FF 3F 00 07 FF 39 01 FF 03 03 02 FF 3F 00 07 FF 39 01 FF 03 03 02 FF 3F 00 07 FF
39 01 FF 03 03 02 FF 3F 00 07 FF 39 01 FF 03 03 02 FF 3F 00 07 FF 39 01 FF 03 03
02 FF 3F 00..... for a while...

Lo necesito todo en una variable de cadena (preferiblemente sin espacios).

Mi código actual apesta y por ahora solo imprime el resultado. (Lo obtuve de ehow) y parece escoger y elegir lo que quiere ingresar / imprimir.

#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    ifstream input;
    input.open("00000000.dat");

    unsigned char h1,h2;

    do
    {
        input >> h1;
        cout << hex << (unsigned int)h1;
        input >> h2;
        cout << hex << (unsigned int)h2;
    }while(!input.eof());

cin.get();
return 0;
}

Es un archivo grande, así que no puedo mostrarle lo que se imprime, pero faltan algunos bytes. (ex "0A 00 00 0A 00 05 ....." se imprime como "00 05 .....") Esto también es válido para el final.

Lo siento si no lo expliqué bien :(

Respuestas a la pregunta(2)

Su respuesta a la pregunta