C_C++

(C언어) 10진수를 16진수로 변환하기

고니자니 2022. 12. 2. 20:38
반응형

#십진수 #십육진수 #변환 #바꾸기

 

 

10진수, 2진수, 8진수, 16진수 관계

2진수 3자리 →→ 8진수 1자리

2진수 4자리 →→ 16진수 1자리

10진수 8진수 16진수 2진수
0 0 0 0000 0000
1 1 1 0000 0001
2 2 2 0000 0010
3 3 3 0000 0011
4 4 4 0000 0100
5 5 5 0000 0101
6 6 6 0000 0110
7 7 7 0000 0111
8 10 8 0000 1000
9 11 9 0000 1001
10 12 A 0000 1010
11 13 B 0000 1011
12 14 C 0000 1100
13 15 D 0000 1101
14 16 E 0000 1110
15 17 F 0000 1111
16 20 10 0001 0000
17 21 11 0001 0001
.. .. .. ..
32 040 20 0010 0000
64 100 40 0100 0000
127 177 7F 0111 1111
255 377 FF 1111 1111



10진수를 입력받아 16진수로 변환하는 C언어 코드입니다.

음수를 입력하면 종료합니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int i, k = 0, m, n, d;
	char c_hex[] = "0123456789ABCDEF";
	char hex[10] = { 0 };

	while (1)
	{
		k = 0;

		printf("10진수: ");
		scanf("%d", &d);
		if (d < 0) break;

		printf("10진수:%d, 16진수:", d);

		while (1)
		{
			m = d / 16;			// 16으로 나눈 몫
			n = d - (m * 16);	// 나머지
			hex[k++] = c_hex[n];
			if (m <= 0) break;
			d = m;
		}

		for (i = k - 1; i >= 0; i--)
			printf("%c", hex[i]);
		printf("\n");
	}

	return 0;
}

 

 

 

반응형