진법 변환의 이해와 컴퓨터 과학에서의 역할
컴퓨터 과학과 디지털 시스템에서는 데이터를 표현하기 위해 다양한 수 체계를 사용합니다. 가장 친숙한 10진수(Decimal) 외에도, 이진 신호의 온/오프 상태를 나타내는 2진수(Binary), 3비트씩 묶어 표현하는 8진수(Octal), 그리고 4비트 단위를 한 자리로 간결하게 표현할 수 있는 16진수(Hexadecimal)가 대표적입니다.
이러한 진법들은 서로 다른 목적을 가집니다. 예를 들어 16진수는 2진수 데이터를 인간이 읽기 쉬운 형태로 축약하여 메모리 주소나 바이트 값을 나타낼 때 자주 쓰입니다. 이 도구는 이러한 네 가지 진법 간의 숫자를 상호 변환하거나, 텍스트 데이터를 각 진법의 바이트 값으로 인코딩 및 디코딩하는 작업을 수행합니다.
숫자 모드의 작동 원리와 입력 규칙
숫자 모드에서는 2진수, 8진수, 10진수, 16진수 중 하나의 필드에 값을 입력하면 다른 세 필드가 즉시 업데이트됩니다. 입력 시에는 다음과 같은 유연한 형식을 지원합니다.
- 접두사 및 구분자: 숫자 앞뒤의 공백,
0b,0o,0x와 같은 진법 접두사, 그리고 가독성을 위한 언더바(_)나 공백 구분자를 포함하여 입력할 수 있습니다. - 음수 처리: 음수는 모든 진법에서 숫자 앞에 마이너스 기호(
-)가 유지된 상태로 변환됩니다. - 정밀도 유지: 내부적으로 BigInt를 사용하여 숫자를 분석하고 형식을 지정하므로, 최대 4,096자까지의 임의 정밀도 정수를 지원하며 반올림 오차 없이 정확한 변환 결과를 제공합니다. 실질적인 숫자 크기 제한이 없습니다.
출력 시 16진수는 대문자로 표시되며, 각 진법에 따라 다음과 같이 앞자리에 0이 채워지는 패딩 규칙이 적용됩니다.
| 진법 | 패딩 규칙 |
|---|---|
| 2진수 (Binary) | 8비트 단위로 앞자리에 0이 채워짐 |
| 8진수 (Octal) | 3비트 단위로 앞자리에 0이 채워짐 |
| 10진수 (Decimal) | 앞자리에 0이 채워지지 않음 |
| 16진수 (Hex) | 2비트 단위로 앞자리에 0이 채워짐 |
입력값에 해당 진법에서 사용할 수 없는 문자가 포함되어 있으면 "해당 진법에 유효하지 않은 숫자입니다. 포함될 수 없는 숫자가 있는지 확인해 주세요."라는 오류 메시지가 표시됩니다. 변환이 완료되면 상태 표시가 "변환되었습니다."로 변경됩니다.
텍스트와 바이트 값의 상호 변환
텍스트 모드에서는 문자열을 UTF-8 규격의 바이트 값으로 변환하거나, 반대로 바이트 값을 해석하여 원래의 텍스트로 복원할 수 있습니다. 최대 200,000자까지의 텍스트 입력을 지원합니다.
- 텍스트 → 바이트 (인코딩): 입력한 텍스트가 UTF-8 바이트 스트림으로 변환되며, 선택한 바이트 진법(2진수, 8진수, 10진수, 16진수)에 따라 출력됩니다. 인코딩이 완료되면 상태는 "인코딩되었습니다."가 됩니다.
- 바이트 → 텍스트 (디코딩): 공백이나 쉼표로 구분된 바이트 값을 입력하여 텍스트로 복원합니다. 각 바이트 값은 선택한 진법을 기준으로 0에서 255 사이의 범위(1바이트 크기) 내에 있어야 합니다. 디코딩이 완료되면 상태는 "디코딩되었습니다."가 됩니다.
디코딩 과정에서 다음과 같은 예외 상황이 발생하면 오류 메시지가 출력됩니다.
- 선택한 진법에서 허용되지 않는 문자가 포함되어 있거나 0~255 범위를 벗어난 토큰이 있는 경우: "유효하지 않은 바이트 코드입니다. 각 값은 선택한 진법에서 1바이트(0~255) 범위 내의 값이어야 합니다."
- 입력된 바이트 배열이 올바른 UTF-8 인코딩 형식을 따르지 않는 경우: "해당 바이트가 유효한 UTF-8이 아니므로 텍스트로 표시할 수 없습니다."
- 입력 데이터가 허용 용량을 초과하는 경우: "이 도구로 처리하기에 너무 깁니다. 더 짧은 입력을 시도해 주세요."
입력 필드를 비우면 상태는 "지워졌습니다."로 변경됩니다.
브라우저 내 로컬 처리와 개인정보 보호
이 도구를 사용할 때 입력하는 모든 숫자와 텍스트 데이터는 외부 서버로 전송되지 않습니다. 모든 변환 및 인코딩/디코딩 연산은 사용자의 웹 브라우저 내부에서 완전히 로컬로 실행됩니다. 따라서 입력한 데이터가 기기 외부로 업로드되거나 유출되지 않습니다.
자주 묻는 질문 (FAQ)
Q. 여기서 무엇을 변환할 수 있나요? A. 두 가지 기능이 있습니다. 숫자 모드는 2진수, 8진수, 10진수, 16진수를 서로 연결하여 하나의 필드를 수정하면 다른 필드들이 즉시 업데이트됩니다. 텍스트 모드는 입력한 텍스트를 선택한 진법의 바이트 값으로 변환하거나, 반대로 바이트 값을 읽어 텍스트로 복원합니다.
Q. 음수나 매우 큰 숫자도 처리할 수 있나요? A. 네, 가능합니다. 음수는 모든 진법에서 앞에 마이너스 기호(-)가 유지되며, 크기 제한이 거의 없어 반올림 없이 정확하게 변환됩니다. 고정 폭 2의 보수 표현은 비트 폭을 먼저 지정해야 의미가 있으므로 제공하지 않습니다.
Q. 입력한 데이터가 어딘가로 전송되나요? A. 아니요, 전송되지 않습니다. 모든 계산은 브라우저 내에서 로컬로 수행되므로 입력한 데이터가 외부로 업로드되지 않습니다.