DWORD литье, чтобы плавать после простого обмена? - PullRequest
4 голосов
/ 04 августа 2011

Я хочу обменять мой пример с плавающей запятой: 14 D7 65 01 ----> 65 01 14 D7

Своп легко сделать. Я работаю над DWORD, я сделал свой своп, а затем приведу переменную DWORD к плавающей. У меня проблема в том, что значение с плавающей точкой неверно. Я уверен, что обмен DWORD в порядке и хорошо сделан. Я думаю, что актерский состав сделан плохо. Любая помощь приветствуется! Заранее спасибо!

Вот ядро ​​кода:

    DWORD value = 0x713D2242; 
    value =(LOWORD(value)<<16)+ HIWORD (value); 
    float fvalue = (float)value;

Ответы [ 2 ]

4 голосов
/ 13 марта 2012

Я не знаю, почему, но я нашел решение из книги, в которой число с плавающей точкой приводится к числу DWORD:

float f = ...;
DOWRD dw;
dw = *((DWORD*)&F);
4 голосов
/ 04 августа 2011

Используйте объединение, например ::100100

union
{
    DWORD i;
    float f;
} u;

DWORD value = 0x713D2242; 
u.i = (LOWORD(value) << 16) + HIWORD(value); 
float fvalue = u.f;
...