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으로 바꿀때 사용된다.
나도 뭐라고쓰는지 잘 모르겠지만, 나중에 내가볼땐 잘 이해할 수 있을것이다. 혹시 필요한사람이 있을수도있으니 포스팅