텍스트 → 2진수 / 16진수 / ASCII 변환기
입력
| 텍스트 | Hi |
|---|
텍스트 → 2진수 / 16진수 / ASCII 변환기
아무 텍스트나 입력하면 2진수, 16진수, 10진수 문자 코드로 보여줍니다. 2진수와 16진수는 UTF-8 바이트 순서를 따르고, 10진수는 각 문자의 유니코드 코드 포인트(영문 텍스트에서는 익숙한 ASCII 값)를 나타냅니다.
입력
텍스트
결과
값을 입력하면 계산 결과가 표시됩니다.
인코딩 결과
텍스트 → 2진수 / 16진수 / ASCII
텍스트는 숫자로 저장된다. 컴퓨터가 다루는 모든 문자 ── 글자, 숫자, 문장 부호, 이모지 ── 에는 숫자 코드가 있으며, 그 코드는 2진수, 16진수, 10진수로 적을 수 있다. 이 계산기는 텍스트를 받아 세 가지 형태를 한꺼번에 보여 주므로, 화면 위의 글자가 디스크 위의 비트로 어떻게 바뀌는지 정확히 볼 수 있다. 인코딩 문제를 디버깅하거나, 조회 표를 만들거나, 문자 코드의 작동 방식을 배우거나, 문자열이 속으로 무엇인지 궁금할 때 유용하다.
문자에서 코드로
문자와 숫자의 대응은 문자 집합으로 정의된다. 가장 오래되어 널리 쓰이는 것이 ASCII로, 0부터 127까지 128개의 코드를 악센트 없는 라틴 문자, 숫자, 일반 문장 부호, 몇 가지 제어 코드에 할당한다. 대문자 H는 72, 소문자 i는 105, 공백은 32, 숫자 0은 48이다. 현대의 텍스트는 유니코드를 사용하며, 같은 발상을 사용 중인 모든 문자 체계와 기호로 확장하면서 원래의 ASCII 코드는 그대로 유지한다.
문자에 코드가 부여되면, 다른 진법으로 적는 일은 평범한 산술일 뿐이다. 숫자 72는 2진수로 01001000, 16진수로 48이다. 이 계산기는 각 문자의 10진 코드를 보여 준 뒤, 그것을 인코딩하는 바이트의 2진수와 16진수를 보여 준다.
ASCII와 UTF-8
ASCII는 128개 문자만 다루며, 각 문자는 1바이트에 들어간다. UTF-8은 바이트 단위로 만들어진 시스템을 통해 유니코드의 전 범위가 지나갈 수 있게 하는 인코딩이다. 그 핵심 성질은 하위 호환성이다. 모든 ASCII 문자는 정확히 1바이트로, ASCII 값과 동일하게 인코딩된다. ASCII 범위를 벗어나는 것은 2~4바이트로 확장된다.
그래서 여기서 2진수와 16진수 출력은 UTF-8 바이트 단위로 묶여 있다. é(코드 포인트 233) 같은 악센트 문자는 C3 A9 두 바이트로, 일반적인 CJK 문자는 세 바이트로, 😀(코드 포인트 128512) 같은 이모지는 네 바이트로 인코딩된다. 반면 10진수 출력은 문자당 하나의 코드 포인트를 보여 주므로, 여러 바이트를 차지하는 문자라도 단일 10진수로 표시된다.
출력 읽기
2진수와 16진수 결과에서 공백으로 구분된 각 그룹은 1바이트로, 8비트 또는 16진 두 자리에 해당한다. 바이트 단위로 묶으면 문자 경계가 보여서, 긴 문자열에서 한 문자의 코드를 골라 읽기 쉽다. 문자 수와 UTF-8 바이트 수가 나란히 표시되며, 둘이 다르면 텍스트에 여러 바이트로 확장되는 비ASCII 문자가 들어 있다는 뜻이다.
풀이 예시
텍스트 Hi를 보자. 두 문자 모두 ASCII 범위에 있으므로 각각 1바이트다.
10진 코드는 72 105, 16진수는 48 69, 2진수는 01001000 01101001이다. 두 문자, 두 바이트 ── 텍스트가 순수 ASCII이므로 문자 수와 바이트 수가 일치한다.
이제 이모지 하나 😀를 보자. 한 문자이지만 ASCII를 훨씬 벗어난 코드 포인트 128512(U+1F600)에 있다. UTF-8은 이를 F0 9F 98 80 네 바이트로 인코딩하므로, 2진수 출력은 8비트 그룹 네 개, 10진수 출력은 단일 코드 포인트 128512이며, 바이트 수는 4, 문자 수는 1이다.
인코딩 되돌리기
이 과정은 무손실이며 가역적이다. 2진수를 다시 8비트 바이트로 나누거나 16진수를 두 자리씩 읽어 UTF-8 바이트 순서를 다시 조립한 뒤 디코딩하면 된다. UTF-8은 고정된 표준이므로, 이를 준수하는 도구라면 원래 텍스트를 정확히 복원한다. 텍스트에서 2진수로, 다시 텍스트로 돌아가는 과정에서 정보는 손실되지 않는다.
관련 계산기
문자 인코딩 단계 없이 하나의 숫자가 10진수, 2진수, 16진수로 어떻게 적히는지 보려면 진법 변환기 를 사용하라. 32비트 IPv4 주소를 정수, 16진수, 2진수 형태로 보려면 IPv4 주소 표현 변환기 를 참고하라. 문자열이 담은 정보량을 재려면 섀넌 엔트로피 계산 가 그 엔트로피를 추정한다.
자주 묻는 질문 (FAQ)
텍스트는 어떻게 2진수로 바뀌나요?
컴퓨터는 텍스트를 숫자로 저장합니다. 각 문자에는 코드가 부여되어 있어서 문자 H는 72, i는 105, 공백은 32와 같이 정해져 있습니다. 이 숫자들을 0과 1만 사용하는 2진수로 적습니다.
ASCII 범위의 문자(기본 영문자, 숫자, 일반 문장 부호)는 한 문자가 1바이트이므로 8비트가 됩니다. 단어 Hi는 72와 105이며, 2진수로는 01001000과 01101001입니다.
ASCII와 UTF-8의 차이는 무엇인가요?
ASCII는 128개 문자를 다루는 원래의 7비트 방식으로, 악센트가 없는 라틴 문자, 숫자, 문장 부호, 제어 코드를 포함합니다. 모든 ASCII 문자는 1바이트에 들어갑니다.
UTF-8은 모든 유니코드 문자를 표현하면서도 바이트 단위로 ASCII와 호환되는 상위 집합입니다. ASCII 문자는 여전히 1바이트지만, 악센트 문자는 보통 2바이트, 한글을 비롯한 대부분의 다른 문자는 3바이트, 이모지는 4바이트를 사용합니다. 이 계산기는 2진수와 16진수를 UTF-8 바이트로 표시하므로, 이모지 하나라도 1개가 아닌 4개의 8비트 그룹이 됩니다.
숫자가 왜 공백으로 묶여 있나요?
공백으로 구분된 각 그룹은 1바이트로, 2진수 출력에서는 8비트, 16진수 출력에서는 2자리에 해당합니다. 바이트 단위로 묶으면 문자 경계가 보여서 긴 문자열에서 한 문자의 코드를 읽기 쉽습니다.
10진수 출력은 바이트가 아니라 문자 단위로 묶이므로, 여러 바이트를 차지하는 문자라도 하나의 코드 포인트로 표시됩니다.
2진수를 다시 텍스트로 바꿀 수 있나요?
네. 이 인코딩은 가역적입니다. 2진수를 8비트 바이트로 나누고 각 바이트를 숫자로 변환한 뒤, UTF-8 바이트 순서를 다시 조립하여 문자로 디코딩하면 됩니다. 16진수 형식도 마찬가지입니다. UTF-8은 명확히 정의된 표준이므로 UTF-8을 읽는 도구라면 원래 텍스트를 정확히 복원합니다.