텍스트 ↔ 바이너리 변환기
브라우저에서 바로 텍스트를 바이너리로, 바이너리를 다시 텍스트로 변환하세요. UTF-8을 완벽히 지원하므로 문자, 숫자, 기호는 물론 이모지까지 정확하게 변환됩니다. 8비트 출력은 공백으로 구분하거나 연속된 형태로 선택할 수 있습니다.
구분자
위에 데이터를 입력하면 변환 결과가 여기에 표시됩니다.
텍스트 ↔ 바이너리 변환기 사용 방법
- 1
변환 방향 선택
토글을 사용해 ‘텍스트 → 바이너리’ 또는 ‘바이너리 → 텍스트’를 선택하세요. 바꾸기 버튼을 누르면 결과가 입력란으로 옮겨져 반대 방향으로 다시 변환할 수 있습니다.
- 2
데이터 입력
텍스트를 입력하거나 붙여넣고, 또는 바이너리 문자열을 붙여넣으세요. 입력하는 즉시 변환이 자동으로 실행되며, UTF-8을 완벽히 지원해 어떤 문자든 처리할 수 있습니다.
- 3
구분자 선택
바이너리 출력에서는 가독성을 위해 바이트마다 공백을 넣거나, 끊김 없는 스트림을 원하면 구분자를 없앨 수 있습니다. 디코딩할 때 공백은 선택 사항입니다.
- 4
결과 복사
변환된 결과를 확인한 뒤 클립보드에 복사하면, 필요한 곳 어디에나 바로 붙여넣을 수 있습니다.
텍스트가 바이너리로 변환되는 원리
바이너리란 무엇이며 컴퓨터가 바이너리를 쓰는 이유
바이너리는 0과 1이라는 단 두 개의 숫자로 이루어진 2진법(base-2) 수 체계입니다. 각 자릿수는 비트(bit)라고 부르며, 이는 'binary digit'의 줄임말입니다. 컴퓨터가 바이너리를 쓰는 이유는 그 물리적 구성 요소가 켜짐과 꺼짐, 높은 전압과 낮은 전압처럼 두 가지 안정적인 상태를 가진 스위치이고, 이 두 상태가 1과 0에 자연스럽게 대응되기 때문입니다. 지금 이 문장을 포함해 컴퓨터가 저장하는 모든 것은 궁극적으로 비트가 길게 이어진 나열입니다.
텍스트도 예외가 아닙니다. 컴퓨터는 문자를 저장하기 위해 먼저 문자 인코딩(character encoding)을 통해 그 문자에 대응하는 숫자를 정한 다음, 그 숫자를 바이너리로 저장합니다. 텍스트를 손으로 직접 바이너리로 변환한다는 것은 이 두 단계를 명시적으로 수행하는 것에 지나지 않습니다. 즉, 각 문자의 숫자 코드를 찾은 뒤 그 코드를 2진법으로 적는 것입니다. 이 도구는 그 결과를 비트 그룹 형태로 보여 주므로 구조를 한눈에 읽을 수 있습니다.
바이트와 8비트 그룹
바이트(byte)는 8개의 비트로 이루어진 묶음이며, 저장의 기본 단위입니다. 8비트는 2의 8제곱, 즉 256가지의 서로 다른 값을 표현할 수 있으며, 이 값들에는 0부터 255까지 번호가 매겨집니다. 이 범위는 원래의 ASCII 문자 전체에 더해 그보다 훨씬 많은 것을 담기에 딱 충분하며, 그래서 바이트는 기본 텍스트의 문자 하나를 나타내는 표준 크기가 되었습니다.
바이트는 항상 8비트이므로, 이 변환기는 각 바이트를 8자리로 고정된 그룹으로 표기하며 필요하면 앞쪽을 0으로 채웁니다. 코드 값이 72인 문자는 1001000이 아니라 01001000으로 적어, 모든 바이트가 동일한 너비로 가지런히 정렬되도록 합니다. 가독성을 위해 그룹 사이를 공백으로 구분하거나 끊김 없는 스트림으로 이어 붙일 수 있는데, 어느 쪽이든 비트 자체는 동일합니다.
문자에서 비트로 가는 단계별 과정
문자 하나를 변환하는 데는 두 단계가 필요합니다. 첫째, 그 문자의 코드 포인트(code point)를 찾습니다. 일반적인 영문자의 경우 이는 ASCII 값이므로, 대문자 H는 72, 소문자 i는 105입니다. 둘째, 어떤 2의 거듭제곱을 더하면 그 값이 되는지를 따져 그 숫자를 8개의 비트로 표현합니다. 비트의 각 자리는 왼쪽에서 오른쪽으로 128, 64, 32, 16, 8, 4, 2, 1의 값을 가집니다.
72를 예로 들어 보겠습니다. 72는 64 더하기 8이므로, 64 자리와 8 자리에 각각 1을 두고 나머지는 모두 0으로 두면 01001000이 됩니다. 105를 봅시다. 105는 64 더하기 32 더하기 8 더하기 1이므로 비트는 01101001입니다. 반대 방향으로 가려면, 1이 있는 자리의 자릿값을 모두 더해 원래 코드를 복원한 다음, 그 코드를 찾아 해당 문자를 얻으면 됩니다.
예제 풀이: "Hi" 인코딩하기
H와 i 두 글자를 이 과정에 넣어 보겠습니다. H는 ASCII 코드 72이고, 이는 64 + 8이므로 바이트 01001000이 됩니다. 글자 i는 ASCII 코드 105이고, 이는 64 + 32 + 8 + 1이므로 바이트 01101001이 됩니다. 공백으로 이으면 "Hi"는 01001000 01101001이 됩니다.
이를 다시 읽어 들이는 것은 같은 계산을 거꾸로 하는 것입니다. 첫 번째 그룹 01001000은 64 자리와 8 자리에 1이 있어 합이 72이고, 이는 H입니다. 두 번째 그룹 01101001은 합이 64 + 32 + 8 + 1 = 105이고, 이는 i입니다. 8비트 그룹 두 개, 문자 두 개. 짧은 단어가 어떻게 저장되는지를 깔끔하게 보여 주는 예입니다.
ASCII와 UTF-8, 그리고 멀티바이트 문자
문자 하나에 바이트 하나라는 단순한 그림은 원래의 ASCII 집합, 즉 코드 포인트 0부터 127까지에만 들어맞으며, 이 범위는 영문자와 숫자, 일반적인 문장 부호를 포함합니다. 그 범위를 벗어나는 것, 즉 악센트 문자와 다른 문자 체계, 기호, 이모지는 모두 이 도구가 사용하는 인코딩인 UTF-8을 따릅니다. UTF-8은 가변 너비 방식입니다. ASCII 문자는 1바이트를 그대로 유지하지만, 다른 문자는 2바이트, 3바이트 또는 4바이트를 차지하며, 각 바이트는 저마다 하나의 8비트 그룹이 됩니다.
예를 들어 악센트가 붙은 é는 UTF-8에서 0xC3과 0xA9라는 두 바이트이므로, 11000011 10101001이라는 두 개의 바이너리 그룹을 만들어 냅니다. 일반적인 이모지는 4바이트이며 따라서 네 개의 그룹이 됩니다. 영어가 아닌 텍스트 문자열이 눈에 보이는 문자 수보다 더 많은 8비트 그룹을 만들어 내는 이유, 그리고 전체 비트 수가 항상 8의 배수가 되는 이유가 바로 여기에 있습니다.
바이너리를 다시 텍스트로 읽어 들이기
디코딩할 때 이 도구는 비트 스트림을 8비트 단위로 잘라 각 덩어리를 숫자로 바꾸고, 그 숫자들을 UTF-8로 디코딩하여 문자를 복원합니다. 이 과정이 제대로 동작하려면 입력에는 0과 1만 들어 있어야 하고, 전체 비트 수는 8의 배수여야 합니다. 바이트는 8비트보다 작은 일부가 될 수 없기 때문입니다.
그룹 사이의 공백은 선택 사항이며 무시되므로, 0100100001101001과 01001000 01101001은 모두 "Hi"로 디코딩됩니다. 바이너리를 붙여넣었는데 변환 오류가 난다면, 대개 그 원인은 문자열 어딘가에 0이나 1이 아닌 문자가 섞여 있거나 길이가 8로 나누어떨어지지 않는 것입니다. 비트가 하나 빠졌거나 하나 더 들어간 경우일 수 있습니다. 이런 부분을 정리하면 디코딩이 성공합니다.
어디에 유용한가
텍스트-바이너리 변환은 교육 현장의 단골 소재입니다. '컴퓨터는 모든 것을 숫자로 저장한다'는 추상적인 개념을 구체적이고 눈에 보이는 것으로 만들어 주기 때문에, 컴퓨터 과학 수업과 코딩 튜토리얼, 그리고 문자 인코딩을 다루는 연습 문제에 자주 등장합니다. "Hi"가 01001000 01101001로 바뀌는 모습을 직접 보면, 정의를 읽는 것만으로는 알기 어려운 '바이트란 무엇인가'를 훨씬 잘 이해할 수 있습니다.
교육 외에도 이 변환은 퍼즐과 방 탈출, 그리고 capture-the-flag(CTF) 문제에 등장하며, 여기서 0과 1의 나열은 짧은 메시지를 숨기는 흔한 방법으로 쓰입니다. 또한 특정 문자의 정확한 비트 패턴을 들여다보거나 특정 유니코드 기호가 UTF-8에서 어떻게 인코딩되는지 확인하고 싶을 때처럼 저수준 디버깅에도 유용합니다. 다만 실제 데이터를 저장할 때는 컴퓨터가 이 변환을 보이지 않는 곳에서 알아서 처리합니다. 이 도구는 그 과정을 이해하고 직접 들여다보기 위한 것입니다.
자주 묻는 질문
텍스트는 어떻게 바이너리로 변환되나요?
이모지나 영어가 아닌 문자도 지원하나요?
디코더는 어떤 바이너리 형식을 사용하나요?
변환 오류는 왜 발생하나요?
내 데이터가 서버로 전송되나요?
관련 도구
이런 편리한 도구도 함께 사용해 보세요