2018. 6. 20. 13:25
        float time = 0;
        int index = 0;
        unsigned char b[] = { buf[index], buf[index + 1], buf[index + 2], buf[index + 3] }; //4byte
        memcpy(&time, &b, sizeof(float));
        index += sizeof(float);
C++에서 byte라는 형식이 없어서 1byte 형식의 unsigned char 을 사용했다.

float은 4byte라 처음엔 float의 byte에 1byte씩 밀어넣는식으로 짯는데 무식한방법이란걸 깨달았다.(비트연산으로 밀어넣는식) 

memcpy 함수를 사용해서 간편하게 만들수있다.  

이 예제는 C#클라 C++서버 소켓통신을 구현하다가 사용하게됬는데,

 c#에서 float을 byte로 변환해서 송신했을때, c++에서 그대로 수신해서 float으로 변환시 비트연산 맨앞 부호값이 1이되

어 값이 정상적으로 안나올경우가 존재한다.

이때 간편하게 변환시킬수있다.

EX) buf[64]는 64 byte Array라 생각하면된다.


buf[64] 에 float 형식 데이터를 16개를 C#에서 보내고 C++에서 receive 한뒤 저 buf[64]의 바이트를 다시 float으로 바꿀때 사용된다. 


 나도 뭐라고쓰는지 잘 모르겠지만, 나중에 내가볼땐 잘 이해할 수 있을것이다. 혹시 필요한사람이 있을수도있으니 포스팅



Posted by 하루나비꿀