문자가 숫자가 되는 과정
컴퓨터는 문자를 직접 저장하지 못하고 번호로 저장합니다. 유니코드는 세계의 모든 글자에 번호(코드 포인트)를 매기고, UTF-8은 그 번호를 1~4바이트로 나누어 적는 규칙입니다. 이 도구는 입력을 UTF-8 바이트로 바꾼 뒤 각 바이트(0~255)를 2진수 8자리, 8진수 3자리, 16진수 2자리로 표기합니다. 반대 방향은 토큰을 바이트로 되돌리고 UTF-8로 해석합니다. 처리는 브라우저 안에서 끝납니다.
한글은 왜 3바이트인가
UTF-8은 코드 포인트 크기에 따라 길이가 달라집니다. 0~127(영문·숫자·기본 기호)은 1바이트, 128~2047(라틴 확장·그리스·키릴 등)은 2바이트, 2048~65535는 3바이트, 그 위(이모지 대부분)는 4바이트입니다. 한글 완성형은 U+AC00부터 시작하므로 3바이트 구간에 속합니다. 첫 바이트는 1110으로 시작하고 뒤의 두 바이트는 10으로 시작하는데, 이 접두 비트 덕분에 중간부터 읽어도 글자 경계를 찾을 수 있습니다. "안녕"이 6바이트, 이진수 48자리가 되는 이유입니다.
역변환이 실패하는 경우
두 단계에서 실패할 수 있습니다. 첫째, 토큰이 진법에 맞지 않거나 길이가 틀린 경우입니다. 2진수는 반드시 8자리씩, 16진수는 2자리씩 끊어야 하고 구분 없이 붙여 넣으면 자동으로 그 길이로 자릅니다. 둘째, 바이트는 모두 맞지만 UTF-8 규칙에 어긋나는 경우입니다. 한글 3바이트 중 하나가 빠졌거나, 원본이 EUC-KR 같은 다른 인코딩이면 여기서 걸립니다. 이때는 깨진 부분을 대체 문자로 둔 결과를 함께 보여 주므로 어디까지 정상인지 확인할 수 있습니다.
표기 옵션
4비트 띄우기는 0110 1000처럼 니블 단위로 나눠 16진수와 대조하기 쉽게 합니다(니블 하나가 16진수 한 자리). 접두어 0b, 0o, 0x는 프로그래밍 언어에서 숫자 리터럴로 붙여 넣을 때 유용합니다. 역변환은 이 접두어와 쉼표·세미콜론·줄바꿈 구분을 모두 무시하고 읽습니다.
자주 묻는 질문
다른 사이트 결과와 달라요.
문자를 UTF-16 코드 단위(16비트)로 변환하는 도구도 있습니다. 그 방식이면 한글이 2바이트로 나옵니다. 이 도구는 파일·네트워크에서 실제로 쓰이는 UTF-8 바이트 기준입니다.
이모지가 4바이트로 나와요.
맞습니다. 대부분의 이모지는 U+1F300 이후 영역이라 UTF-8에서 4바이트입니다. 피부색·결합 이모지는 여러 코드 포인트가 이어져 8바이트 이상이 되기도 합니다.
자동 감지가 잘못 판단해요.
입력이 0과 1, 공백으로만 되어 있으면 숫자로, 아니면 텍스트로 봅니다. 16진수만 있는 텍스트("cafe")처럼 애매한 경우에는 방향을 직접 선택하세요.