🔢 텍스트 ↔ 2진수 변환기
글자를 2진수·16진수·10진수·8진수로 바꾸고, 숫자열을 다시 글자로 되돌려요. UTF-8 바이트 수도 함께 보여 줘요.
사용법
- 방향을 고르세요. "글자 → 숫자"는 입력한 글자를 숫자열로, "숫자 → 글자"는 숫자열을 글자로 바꿔요.
- 진수를 고르세요. 2진수(0과 1), 16진수(0~9와 A~F), 10진수, 8진수를 지원해요. 옆의 버튼으로 예시 글자를 바로 넣어 볼 수 있어요.
- 글자 → 숫자에서는 숫자 사이에 넣을 구분(공백·쉼표·붙여 쓰기)과 16진수 앞에
0x를 붙일지 정해요. 결과를 누르면 복사돼요. - 숫자 → 글자에서는 공백이나 쉼표로 나눠 넣어도 되고, 구분 없이 붙여 써도 돼요. 2진수는 8자리, 16진수는 2자리, 8진수는 3자리씩 끊어 읽어요.
글자가 0과 1이 되는 원리
컴퓨터는 글자를 그대로 저장하지 못하고, 글자마다 번호를 붙인 뒤 그 번호를 2진수로 저장해요. 영어 알파벳 대문자 A는 65번이고, 65를 2진수로 쓰면 1000001, 8자리로 맞추면 01000001이에요. 이 번호표가 ASCII(미국정보교환표준부호)이고, 영어·숫자·기본 기호 128개를 0~127번으로 정해 두었어요. 전 세계 글자를 한 표에 담은 것이 유니코드이고, 유니코드 번호(코드 포인트)를 실제 저장할 바이트 열로 바꾸는 방식 가운데 가장 널리 쓰는 것이 UTF-8이에요. 웹 페이지의 대부분이 UTF-8이고, 이 도구도 UTF-8 기준으로 바꿔요.
UTF-8의 규칙은 간단해요. 코드 포인트가 0~127이면 ASCII와 똑같이 1바이트, 128~2047이면 2바이트, 2048~65535(한글 음절 포함)면 3바이트, 그 위(이모지 대부분)는 4바이트로 저장해요. 그래서 영어 한 글자는 8비트인데 한글 한 글자는 24비트(3바이트)예요. 한 글자에 해당하는 바이트 수는 아래 표에서 볼 수 있어요.
| 글자 | 유니코드 | 바이트 | 2진수(UTF-8) | 16진수 | 10진수 |
|---|---|---|---|---|---|
| A | U+0041 | 1 | 01000001 | 41 | 65 |
| a | U+0061 | 1 | 01100001 | 61 | 97 |
| 0 | U+0030 | 1 | 00110000 | 30 | 48 |
| U+0020 | 1 | 00100000 | 20 | 32 | |
| é | U+00E9 | 2 | 11000011 10101001 | C3 A9 | 195 169 |
| 한 | U+D55C | 3 | 11101101 10010101 10011100 | ED 95 9C | 237 149 156 |
| 글 | U+AE00 | 3 | 11101010 10111000 10000000 | EA B8 80 | 234 184 128 |
| € | U+20AC | 3 | 11100010 10000010 10101100 | E2 82 AC | 226 130 172 |
| 😀 | U+1F600 | 4 | 11110000 10011111 10011000 10000000 | F0 9F 98 80 | 240 159 152 128 |
한글 "한"의 유니코드는 U+D55C이고, UTF-8로는 ED 95 9C 세 바이트가 돼요. 2진수로 풀면 11101101 10010101 10011100이에요. 3바이트 글자의 틀은 1110xxxx 10xxxxxx 10xxxxxx이고, 코드 포인트 D55C를 2진수로 쓴 1101 010101 011100의 16비트를 x 자리에 차례로 채우면 위의 값이 나와요. 맨 앞 비트가 1110이면 "이 글자는 3바이트짜리", 뒤따르는 바이트는 모두 10으로 시작한다는 약속이라, 중간부터 읽어도 글자 경계를 찾을 수 있어요.
ASCII 코드 몇 가지 외워 두기
- 숫자 0~9는 48~57번(0x30~0x39)이에요. 문자 "0"은 숫자 0이 아니라 48번이에요. 그래서 문자 숫자에서 48을 빼면 실제 숫자가 돼요.
- 대문자 A~Z는 65~90번(0x41~0x5A), 소문자 a~z는 97~122번(0x61~0x7A)이에요. 소문자는 대문자보다 정확히 32(2진수로 00100000, 즉 한 비트)만 커서, 그 비트 하나로 대소문자가 바뀌어요.
- 공백은 32번(0x20), 줄바꿈은 10번(0x0A), 탭은 9번이에요. 화면에 안 보여도 번호가 있는 제어 문자예요.
- 한글은 ASCII 표에 없어요. 한글 음절 11,172자는 유니코드 U+AC00(가)~U+D7A3(힣)에 들어 있어요.
예시로 직접 계산해 보기
| 입력 | 2진수 | 16진수 |
|---|---|---|
| SOS | 01010011 01001111 01010011 | 53 4F 53 |
| Hi | 01001000 01101001 | 48 69 |
| Hello | 01001000 01100101 01101100 01101100 01101111 | 48 65 6C 6C 6F |
| 한 | 11101101 10010101 10011100 | ED 95 9C |
"Hi"를 손으로 풀어 보면, H는 72번이라 64 + 8 = 01001000이고 i는 105번이라 64 + 32 + 8 + 1 = 01101001이에요. 2진수 8자리의 자리값은 왼쪽부터 128, 64, 32, 16, 8, 4, 2, 1이라, 1이 있는 자리의 값을 더하면 10진수가 돼요.
어디에 쓰나요
- 정보·컴퓨터 과목 숙제: 글자를 이진수로 바꾸는 과정을 확인하거나 답을 검산할 때.
- 개발·디버깅: 네트워크 패킷이나 파일 헤더의 16진수 값을 글자로 읽을 때, 문자 인코딩이 깨졌는지(예: 한글이 3바이트가 아니라 2바이트로 저장됨) 확인할 때.
- 이진수 문구·암호 놀이: 이름이나 문구를 0과 1로 바꿔 카드나 선물에 적을 때. 되돌리는 기능으로 받은 문구를 풀어 볼 수 있어요.
자주 생기는 오류
- 8자리가 아닌 2진수: "1000001"처럼 7자리면 한 바이트로 읽어서 A가 되지만, 붙여 쓴 긴 열은 8의 배수 자리여야 끊어 읽을 수 있어요. 앞에 0을 붙여 8자리로 맞추세요.
- 바이트를 넘는 값: 10진수 300은 한 바이트(0~255)에 들어가지 않아요. 유니코드 번호(예: 44032)를 넣을 때는 UTF-8 바이트로 풀어서 넣어야 해요.
- 순서가 깨진 UTF-8: 한글 3바이트 중 일부만 있으면 글자로 읽을 수 없어서 오류 안내가 나와요.
- EUC-KR·CP949로 저장된 한글: 이 도구는 UTF-8 기준이라, 옛 인코딩의 2바이트 한글 값은 그대로 읽히지 않아요.
변환은 모두 브라우저 안에서 일어나고 입력한 글자는 서버로 보내지 않아요. 유니코드와 UTF-8 정의는 유니코드 컨소시엄과 RFC 3629(UTF-8)에서 확인할 수 있어요. 진수 변환 자체가 필요하면 진수 변환기를, 유니코드 이스케이프 표기가 필요하면 유니코드 변환기를 쓰세요.