What's the algorithm to translate 8 byte memory into a double number on x86 32bit?

StackOverflow https://stackoverflow.com/questions/23098681

  •  04-07-2023
  •  | 
  •  

Вопрос

So basically I disassemble some code on 32bit Linux and in the rodata section, where double should exist, I find these 8 bytes:

00000000 00002440

The original double number is 10.0

Could anyone tell me how to transform this 8 bytes into double?

Это было полезно?

Решение

Put the bytes into a buffer and ask C to interpret the memory as a double.

#include <stdio.h>  

int main(){
    char* foo = "\x00\x00\x00\x00\x00\x00\x24\x40";
    double bar =*((double*) foo);
    printf("%f\n", bar);
}

Output:

10.000000
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top