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

조회수 2555회

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)