float 4byte 데이터에 관해 질문을 드립니다.


iobyte[0][0] = 44 , iobyte[0][1] = e8 , iobyte[0][2] = 35 , iobyte[0][3] = 42

와 같은 형태로 들어온 데이터가 있고,

float의 실수 저장된 형태의 값이 순서대로 나열된 44e83542 라고하면

어떤식으로 float에 저장을 해야 정상적인 float 값을 읽어낼수있을까요?

  • 2016년 11월 11일에 작성됨

조회수 59


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인지 확인 후 순서대로 넣으면 됩니다.

  • 2016년 11월 22일에 작성됨
    그렙에서 웹 프론트 개발을 하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close