float 4byte 데이터에 관해 질문을 드립니다.
조회수 2553회
iobyte[0][0] = 44 , iobyte[0][1] = e8 , iobyte[0][2] = 35 , iobyte[0][3] = 42
와 같은 형태로 들어온 데이터가 있고,
float의 실수 저장된 형태의 값이 순서대로 나열된 44e83542 라고하면
어떤식으로 float에 저장을 해야 정상적인 float 값을 읽어낼수있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
이렇게 변환 해서 읽어 들이면 될듯합니다.
#include <stdio.h> #include <string.h> typedef unsigned char uchar; float bytesToFloat(uchar b0, uchar b1, uchar b2, uchar b3) { float output; *((uchar*)(&output) + 3) = b0; *((uchar*)(&output) + 2) = b1; *((uchar*)(&output) + 1) = b2; *((uchar*)(&output) + 0) = b3; return output; } int main(){ float f = 2.45f; char a[sizeof(float)]; memcpy(a, &f, sizeof(float)); printf("%f\n", bytesToFloat(a[3],a[2], a[1], a[0])); return 0; }
파라미터 입력 순서는 Big Endian 혹은 Little Endian인지 확인 후 순서대로 넣으면 됩니다.
댓글 입력