DWORD转换后浮动一个简单的交换?

时间:2011-08-04 16:50:55

标签: c casting floating-point swap dword

我想交换我的浮动例子:14 D7 65 01 ----> 65 01 14 D7

交换很容易。我在DWORD上工作,我进行了交换,然后将DWORD变量转换为float。我遇到的问题是浮点值是错误的。 我确信DWORD交换没问题,做得好。我认为演员阵容很糟糕。 任何帮助都非常欢迎!提前谢谢!

以下是代码的核心:

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

2 个答案:

答案 0 :(得分:4)

使用联合,例如:

union
{
    DWORD i;
    float f;
} u;

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

答案 1 :(得分:4)

我不知道为什么,但是我从一本书中找到了一个解决方案,它将一个浮点数转换为DWORD数字:

float f = ...;
DOWRD dw;
dw = *((DWORD*)&F);