문제

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