문제 설명
Little Big 엔디안 모드를 변경하는 함수를 설계하라
int Change_Endian(int a); a 값을 받으면 엔디안 모드를 바꿔서 리턴 한다
#include <stdio.h>
union uni
{
int a;
char b[4];
};
int Change_Endian(int data)
{
char tmp;
union uni x;
x.a = data;
// 코드 작성
return x.a;
}
void main(void)
{
int a = 0x12345678;
printf("0x%.8x => 0x%.8x\n", a, Change_Endian(a));
}
출력 예시
0x12345678 => 0x78563412
정답 코드
#include <stdio.h>
union uni
{
int a;
char b[4];
};
int Change_Endian(int data)
{
char tmp;
union uni x;
x.a = data;
// 코드 작성
tmp = x.b[0];
x.b[0] = x.b[3];
x.b[3] = tmp;
tmp = x.b[1];
x.b[1] = x.b[2];
x.b[2] = tmp;
return x.a;
}
void main(void)
{
int a = 0x12345678;
printf("0x%.8x => 0x%.8x\n", a, Change_Endian(a));
}
메모
printf 내부의 \n 습관화 필요