텍스트 - 2진수 변환기
텍스트를 2진수(8비트 UTF-8 바이트)로 변환하고 다시 되돌립니다 — 두 입력창 모두 실시간, 양방향으로 작동합니다.
조회수 1,122회
작동 방식
텍스트는 문자 단위로 2진수로 변환되는 것이 아니라, 먼저 UTF-8로 인코딩된 후 바이트 단위로 변환됩니다. 이 차이는 중요합니다. 하나의 문자가 항상 하나의 바이트를 차지하는 것은 아니기 때문입니다. ASCII 문자(일반 영문자, 숫자, 문장 부호, 코드 포인트 0-127)를 입력하면 정확히 1바이트에 들어맞으므로, 예를 들어 A는 하나의 8비트 그룹 01000001이 됩니다. 하지만 영어가 아닌 대부분의 문자는 더 많은 공간을 필요로 합니다. 터키어의 점이 있는 대문자 İ(유니코드 U+0130)는 UTF-8에서 1바이트가 아니라 2바이트로 인코딩됩니다: 11000100 10110000 — 서로 다른 두 개의 8비트 그룹입니다. 😀(U+1F600) 같은 이모지는 4바이트가 필요합니다: 11110000 10011111 10011000 10000000. 이 도구는 정확히 이 처리 과정을 실행합니다 — 텍스트 → UTF-8 바이트 → 바이트마다 하나씩 공백으로 구분된 8비트 2진수 그룹 — 그래서 "İ", "ğ" 또는 이모지가 포함된 단어는 "문자 하나에 바이트 하나"라는 단순한 가정으로 예상되는 것보다 눈에 띄게 더 많은 그룹을 만들어냅니다.
이 추가 바이트는 임의로 정해진 것이 아니라, UTF-8을 인식하는 모든 디코더(변환을 역방향으로 수행하는 이 도구도 포함)가 인식할 수 있는 고정된 비트 패턴을 따릅니다. 다중 바이트 시퀀스의 첫 번째 바이트는 문자가 몇 바이트로 구성되는지를 알리는 1비트의 연속과 그 뒤를 잇는 0으로 시작합니다 — 110xxxxx는 "총 2바이트", 1110xxxx는 "3바이트", 11110xxx는 "4바이트"를 의미합니다 — 반면 그 뒤를 따르는 모든 바이트, 즉 연속 바이트는 항상 고정된 접두사 10xxxxxx로 시작합니다. İ에 대한 11000100 10110000을 읽어보면: 디코더는 110(2바이트 선행 바이트)을 확인한 다음 10으로 시작하는 바이트(정확히 하나의 연속 바이트)를 확인하여 시퀀스가 완전하다는 것을 확인하고, 두 바이트에 남은 비트들을 결합해 단일 유니코드 코드 포인트 U+0130을 재구성합니다. 다중 바이트 문자 중간에 잘못되거나 손상된 바이트가 있으면 디코딩이 깨지는 이유도 바로 이것입니다 — 연속 바이트 접두사가 정확히 맞아떨어져야만 문자를 다시 조합할 수 있습니다.
알아두어야 할 사항
2진수를 다시 텍스트로 변환하는 과정은 동일한 처리 과정을 역순으로 수행합니다: 8비트 그룹을 순서대로 읽고, 각 선행 바이트의 접두사를 확인하여 몇 개의 연속 바이트가 함께 속하는지 파악한 뒤 완전한 UTF-8 바이트 시퀀스로 다시 묶고, 이를 문자로 디코딩합니다 — 그 결과 올바르게 생성된 2진수 문자열은 항상 근사치가 아니라 터키어 문자와 이모지를 포함한 원본 텍스트 그대로 되돌아옵니다. 이는 여기서 다루는 2진수가 특별히 UTF-8이기 때문에만 가능합니다: 다른 인코딩(UTF-16 또는 ISO-8859-9/Windows-1254 같은 터키어 단일 바이트 인코딩)으로 생성된 2진수는 동일한 문자에 대해 다른 바이트 수와 비트 패턴을 사용하므로, 여기에 붙여넣으면 잘못된 텍스트로 디코딩되거나 아예 실패합니다 — 이 도구는 범용 2진수-텍스트 변환기가 아니라 UTF-8 전용 도구입니다. 전체 변환 과정이 브라우저에서 클라이언트 측으로만 실행되기 때문에, 입력한 텍스트나 2진수는 어디로도 전송되지 않습니다.
자주 묻는 질문
왜 문자 하나가 8비트보다 많은 값을 만들어내기도 하나요?
텍스트는 먼저 UTF-8로 인코딩됩니다. ASCII 문자는 1바이트(8비트)를 차지하지만, 억양 부호가 있는 문자, 터키어 문자, 이모지는 2~4바이트를 차지할 수 있습니다 — 각 바이트는 각자의 8비트 그룹으로 표시되므로, 문자 하나가 정당하게 16비트, 24비트, 또는 32비트로 확장될 수 있습니다.
İ, ğ, ş 같은 터키어 문자는 왜 하나가 아니라 두 개의 2진수 그룹이 필요한가요?
이 문자들은 0-127 ASCII 범위를 벗어나므로, UTF-8은 이를 2바이트 시퀀스로 인코딩합니다: 110xxxxx로 시작하는 선행 바이트 하나와 그 뒤를 잇는 10xxxxxx로 시작하는 연속 바이트 하나입니다. 예를 들어 İ는 11000100 10110000이며, 이는 하나의 문자를 나타내는 두 개의 그룹입니다.
이모지도 변환할 수 있나요? 몇 비트가 필요한가요?
네, 가능합니다. 대부분의 이모지는 유니코드에서 충분히 높은 위치에 있어 전체 4바이트 UTF-8 형식이 필요합니다: 11110xxx로 시작하는 선행 바이트 하나와 각각 10xxxxxx로 시작하는 연속 바이트 세 개 — 이모지 문자 하나당 총 32비트입니다.
2진수 입력에 잘못된 그룹이 있으면 어떻게 되나요?
그룹은 반드시 0과 1로 이루어진 정확히 8자여야 하며 공백으로 구분되어야 합니다. 잘못되었거나 불완전한 그룹, 그리고 유효한 선행 바이트와 맞지 않는 연속 바이트는 변환을 중단시키지 않고 건너뜁니다.
UTF-8이 아닌 다른 인코딩과도 작동하나요?
아니요, 그리고 그렇게 작동한다고 주장해서도 안 됩니다. UTF-16과 터키어용 ISO-8859-9 같은 기존 단일 바이트 인코딩은 동일한 문자에 대해 서로 다른 바이트 수와 비트 패턴을 사용합니다. 이러한 인코딩으로 생성된 2진수는 여기서 올바르게 디코딩되지 않습니다 — 이 도구는 특별히 UTF-8 전용 텍스트-2진수 변환기입니다.
비슷한 도구
문제 신고하기
텍스트 - 2진수 변환기
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!