2012. 1. 11. 17:15 개발
[C/C++] float 데이터를 char배열에 저장하는 방법 !!!! 메모리를 공유하는 union type
이건 정말 엄청난 사실이었다..
메모리를 공유하게 해주는 struct가 있었다니 !!!!
그건 바로 union type!!!
char 는 변수 하나당 1 byte
float 와 int 는 변수 하나당 4 byte
그리하여 결국 float a 는 char b[4] 에 담길 수 있는 것이다.
패킷으로 전송을 할때 우리는 char배열만을 보낼수 있는 고로..
이것은 정말 갈라지는 땅에 단비와 같은 사실이 아닐 수 없었다.
다음의 코드는 어떻게 위의 작업을 할 수 있는지를 보여주는 코드이다.
실제로 복/붙 하여도 멋지게 돌아갈 것이다 테스트 해보라!!
#include <stdio.h>
#include "stdafx.h"
typedef union
{
unsigned char a[4];
float b;
} union_data;
int main()
{
union_data data_s,data_r;
data_s.b = 123.352; // send할 float값을 세팅한다.
// 캐릭터 배열의 메모리만을 복사한다!!!!
// 캐릭터 배열의 메모리만을 복사한다!!!!
memcpy(&data_r.a, &data_s.a,sizeof(data_s.a));
printf("%x %x %x %x\n", data_r.a[0], data_r.a[1], data_r.a[2], data_r.a[3]);
// 넘겨받은 데이터의 FLOAT 값을 출력해본다.
// 넘겨받은 데이터의 FLOAT 값을 출력해본다.
printf("%f\n", data_r.b);
return 0;
}
이정도면 어떤가.. 대단하지 않은가??
이글을 읽으시는 모두에게 도움이 되었기를 바랍니다 ㅋㅋㅋ
이정도면 어떤가.. 대단하지 않은가??
이글을 읽으시는 모두에게 도움이 되었기를 바랍니다 ㅋㅋㅋ
'개발' 카테고리의 다른 글
[C/C++] 임의의 Object를 패킷으로 송.수신하는 방법 (0) | 2012.01.11 |
---|---|
[시스템 프로그래밍] Simple Message Queue example (0) | 2011.12.11 |
[Graphics] 3D Object Manipulation (Camera / Transformation) (0) | 2011.12.07 |
[Graphics] 2D object Manipulation using OpenGL (0) | 2011.12.07 |
[shell programming] Multiple piping in C (0) | 2011.12.06 |