char 포인터 배열의 강제 형 변환 관련
글쓴이: leboum / 작성시간: 월, 2014/01/13 - 4:38오후
char* data = (char *)malloc(sizeof(char) * 8);
memset(data, 0x00, 8);
data[0] = (unsigned short*)1122;
data[2] = (unsigned short*)1122;
data[4] = (unsigned int*)4455;
printf("Data : %d, %d, %d, %d\n", data[0], data[2], data[4]);
Data : 0, 98, 98, 0, 103, 0 0 0
위와 같이 char*의 배열을 잡아서 강제형 변환 후 데이터를 넣고 싶은데,
생각처럼 안 들어가네요.
이유가 뭔지 알려주시면 감사하겠습니다.
Forums:
data[0] = (unsigned
data[0] = (unsigned short*)1122;
가 아니라 실제로는
unsigned short a = 1122;
data[0] = (unsigned char*)&a;
...
printf("Data : %d\n", *(unsigned short *)data[0]);
로 하시고 싶었던 듯...
어떠한 의도로 작성했는지는 잘 모르겠지만....
// 1122 라는 unsigned short type 정수를 char []의 변수에 넣어보자.
const int size_of_ushort = sizeof(unsigned short);
char data[size_of_ushort];
for (int i = 0; i < size_of_ushort; i++)
{
data[i] = char((1122u >> 8*i) & 0xFF);
}
cout << *(unsigned short*)data << endl;
댓글 달기