본문 바로가기

Etc/Excel

Excel로 진수 변환 및 자릿수 맞추기

가끔 10진수를 2진수로, 혹은 16진수를 10진수 등으로 변환해야 할 필요를 느낄 때가 있습니다.

ASCII to Hex와 같이 이미 구현된 다양한 변환 사이트를 활용하여도 좋지만 이런 사이트들은 대게 1 by 1으로 한번에 하나만 변환이 가능하고, 엑셀로 훌륭하게 함수가 구현되어 있으니 이를 활용해보고자 합니다.


함수

입력/출력 10진수 2진수 8진수 16진수
10진수 DEC2BIN DEC2OCT DEC2HEX
2진수 BIN2DEC BIN2OCT BIN2HEX
8진수 OCT2DEC OCT2BIN OCT2HEX
16진수 HEX2DEC HEX2BIN HEX2OCT

10진수를 2진수로 변환하고자 하면,DEC2BIN함수를,
16진수를 8진수로 변환하고자 하면,HEX2OCT함수를 사용한다.

눈치챘다시피 이 함수들은 알기쉬운 규칙성을 갖고 있습니다.
2는 영어의 to를 의미하고,
10진수(Decimal), 2진수(Binary), 8진수(Octal), 16진수(Hexadecimal)의 각 앞 3자리를 가져다가 DEC, BIN, 0CT, HEX로 표현하고 이를 이용해 함수를 만든겁니다.

다시말해, 2의 앞에 변환하고자 하는 입력을 뒤에 얻고자하는 출력을 붙이면 함수가 만들어지는 거죠.

예시

함수에 대해 알아보았으니 이제 엑셀에서 직접 함수를 적용해보겠습니다.
0~15까지의 정수를 엑셀로 2진수와 16진수로 변환해봅시다.

  1. Excel상에서 DEC2BIN 함수를 활용해 10진수를 2진수로 변환

    DEC2BIN 함수로 10진수를 2진수로 변환

  2. Excel상에서 DEC2HEX 함수를 활용해 10진수를 16진수로 변환

    DEC2HEX 함수로 10진수를 16진수로 변환

  3. 2진수와 16진수로 변환된 0부터 15까지의 10진수

    Excel 함수를 사용해 10진수에서 2진수와 16진수로 변환


자릿수 맞추기

변환을 완료했는데 엑셀을 보면 뭔가 마음이 편치않습니다.
다시 살펴보니 자릿수가 맞지 않아 불편했던 거였어요!
이번엔 자릿수를 맞춰봅시다.

자릿수를 맞추는 방법 3가지

1.  셀 서식
2.  TEXT 함수
3.  REPT 함수

1. 셀 서식

적용하고자 하는 범위를 드래그해 지정한 뒤 우클릭 > 셀 서식 또는 Ctrl + 1으로 셀 서식에 들어갑니다.
범주에서 사용자 지정을 선택하고, 형식에 0000과 같이 원하는 자릿수만큼 0을 넣어줍니다.
우측 하단 확인을 누르고 나오면 완료!

2. TEXT 함수

자릿수를 맞추려는 셀에 TEXT(DEC2BIN(B3),"0000")와 같이 함수를 넣어줍니다.

16진수에 적용하기 위해 셀 서식으로 ""(쌍따옴표) 안에 "00;0#" 형식으로 넣어줬지만, 적용이 되지 않는 문제가 발생.

3. REPT 함수

  1. 지정된 텍스트 문자열의 문자개수를 구하는 LEN() 함수를 이용하여 지정된 셀의 자릿수를 구합니다.

    LEN(DEC2HEX(B3))
  2. 사용자가 지정한만큼 텍스트를 반복하는 REPT() 함수를 이용하여, 원하는 자릿수 - LEN 함수로 구한 지정된 셀의 자릿수를 REPT() 함수에 넣어 지정된 셀 앞에 0을 반복시킵니다. (여기서 원하는 자릿수는 16진수이므로 2입니다.)

    REPT("0",2-LEN(DEC2HEX(B3)))
  3. 부족한 자릿수만큼 반복되는 0의 뒤에 변환한 16진수&를 이용해서 붙여줍니다.

    REPT("0",2-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

결과

Decimal Binary Hexadecimal
0 0000 00
1 0001 01
2 0010 02
3 0011 03
4 0100 04
5 0101 05
6 0110 06
7 0111 07
8 1000 08
9 1001 09
10 1010 0A
11 1011 0B
12 1100 0C
13 1101 0D
14 1110 0E
15 1111 0F