이건 정말 엄청난 사실이었다..
메모리를 공유하게 해주는 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 값을 출력해본다. 
  printf("%f\n", data_r.b);
  return 0;
}


이정도면 어떤가.. 대단하지 않은가??
이글을 읽으시는 모두에게 도움이 되었기를 바랍니다 ㅋㅋㅋ 
Posted by jsilva

블로그 이미지
음악을 좋아하는 개발자입니다 ㅎㅎ 그냥 제 일상, 생각, 지식, 정보 등을 담은 위한 공간입니다 ^^
jsilva

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

글 보관함

최근에 올라온 글

최근에 달린 댓글