공부중

[C/C++] 배열 안에 자료형 크기가 다른 값으로 채우기 본문

Programing/C, C++

[C/C++] 배열 안에 자료형 크기가 다른 값으로 채우기

곤란 2022. 4. 18. 16:49
반응형

제목을 뭐라고 지을까 하다가 좋은 이야기가 떠오르지 않아서 이렇게 써보았다.

오늘 많은? 일들이 있었지만 특히 생각나는게..

내가 겪었던 문제와 100% 일치하지는 않지만(완전 똑같지는)

결국에는 그 짧은 당시에는 이 방법이 떠오르지 않아서? 안떠오르면 모르는게 맞지... ㅠ

일단 써보려고 한다.

unsigned int value = 0xFF55AA00;
char foo[4];

일단 unsigned int형인 value의 값을 char 배열에 모두 넣고싶었다.

unsigned int value = 0xFF55AA00;
char foo[4];

foo[0] = value;

그때 무슨 정신머리였는지 나는 위와같은 코드를 짜버렸고... 후....

당연히 foo[1] foo[2] foo[3]에 값은 들어가 있지 않았다.

 

그래서 지금 와서 다시 생각을 해본 결과

unsigned int value = 0xFF55AA00;
char foo[4];

foo[0] = value;
foo[1] = value >> 8;
foo[2] = value >> 16;
foo[3] = value >> 24;

이런 방식으로 일일히 넣어줄수도 있고

뭔가 일일히 넣는것이 조금 거시기해보여서 아래와 같은 코드도 짜 버렸다

unsigned int value = 0xFF55AA00;
char foo[4];

unsigned int* temp = (unsigned int*)foo;
*temp = value;

포인터의 형변환을 해서 값을 넣어주었다.

 

일단 이게 의도하신 정답인지는 모르겠지만

더 좋은 방법이 있다면 글을 업데이트 해볼 생각이다.

반응형