Conversión de datos de punto flotante de precisión simple de IBM al valor deseado

Necesito leer valores de un archivo binario, el formato de datos es punto flotante de precisión simple de IBM (datos de exponente hexadecimal de 4 bytes) y usar el valor como un número decimal. Tengo un código C ++ que lee el archivo y saca cada byte y lo almacena así

 unsigned char buf[BUF_LEN];

        for (long position = 0; position < fileLength; position += BUF_LEN) {
            file.read((char* )(&buf[0]), BUF_LEN);

           // printf("\n%8ld:  ", pos);

            for (int byte = 0; byte < BUF_LEN; byte++) {
               // printf(" 0x%-2x", buf[byte]);
            }
        }

Esto imprime los valores hexadecimales de cada byte.

esta imagen especifica el punto flotante de precisión simple de IBMPunto flotante de precisión simple de IBM No entiendo qué es una fracción binaria positiva de 24 bits. Sé cómo convertir entre hexadecimal <-> dec <-> binario, por lo que mi comprensión básica sería tomar todas las q y tratarlas como un segmento binario muy largo que usaría Q24 (2) ^ (23) como el más grande valor al sumar todos los valores anteriores juntos, y luego solo multiplica el número por 10 ^ -24. Pero mi intuición me dice que esto está mal. Tampoco tengo idea de qué es un punto de raíz o MSB.

¿Alguna idea de cómo puedo usar estos datos? Mi objetivo es dibujar líneas usando cada valor como el nuevo punto. Sé que esto no fue muy breve, pero no es un tema donde una breve pregunta no puede ser sucinta.

Respuestas a la pregunta(1)

Su respuesta a la pregunta