Home > Study > C Language > C Example > [ex78] 공용체 활용 예 : 엔디안 모드 변경

[ex78] 공용체 활용 예 : 엔디안 모드 변경
Study Language

문제 설명


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 습관화 필요