Saltar al contenido

¿Leer un entero de 32 bits de un archivo binario en C++?

Después de de nuestra larga selección de información dimos con la solución esta aprieto que presentan ciertos los lectores. Te brindamos la respuesta y nuestro objetivo es resultarte de gran apoyo.

Solución:

Tienes dos problemas:

  1. Asegurándose de leer los bytes que desea (ni menos, ni más) de la secuencia.

    Recomiendo esta sintaxis:

    uint32_t a;

    inFILE.read(reinterpret_cast(&a), sizeof(a));

  2. Asegúrese de interpretar esos bytes con el orden de bytes correcto.

    P: Si está en una PC, su CPU probablemente sea little endian. ¿Sabe si su flujo de datos también es little-endian o es big-endian?

    Si los datos son big-endian, consideraría las funciones de red estándar para acomodar el orden de bytes: ntohl()etc: http://www.retran.com/beej/htonsman.html

ADEMÁS:

Siga los consejos de Hcog y Daniel Jour: no se olvide del parámetro “modo abierto” y no olvide verificar los errores de “abrir archivo”.

Abra el archivo en modo binario y luego use read() método, algo como:

uint32_t a;
ifstream file ("file", ios::in | ios::binary);
if (file.is_open())

     file.read ((char*)&a, sizeof(a));

Si para ti ha sido provechoso este post, sería de mucha ayuda si lo compartieras con más entusiastas de la programación y nos ayudes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *