2011-08-04 4 views
3

플로트 예제를 교환하고 싶습니다 : 14 D7 65 01 ----> 65 01 14 D7간단한 스왑 후에 DWORD를 float으로 변환 하시겠습니까?

스왑은 간단합니다. DWORD에서 작업하고 스왑을 만든 다음 내 DWORD 변수를 부동 상태로 변환합니다. 내가 가진 문제는 실수 값이 잘못되었다는 것입니다. 나는 DWORD 교환이 잘되고 잘되었다고 확신한다. 나는 캐스트가 심하게 만들어 졌다고 생각한다. 도움이 될만한 것은 없습니다. 미리 감사드립니다.

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

답변

3

노동 조합을 사용하여, 예를 들면 :

union 
{ 
    DWORD i; 
    float f; 
} u; 

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

작동합니다! 고맙습니다! – Hassen

3

내가하지만 난에 플로트 번호를 캐스팅 책에서 해결책을 찾을 이유를 알고이 donot 여기

코드의 핵심입니다 DWORD 번호 :

float f = ...; 
DOWRD dw; 
dw = *((DWORD*)&F); 
관련 문제