Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트로 문자열을 바이너리(이진수)로 변환하는 방법

문제 소개

문자열 하나를 유일한 인수로 받아, 해당 문자열의 이진수(binary) 표현을 만들어 반환하는 자바스크립트 함수를 작성해야 합니다.

예를 들어, 입력 문자열이 다음과 같다면 −

const str = 'Hello World';

함수는 아래와 같은 형태의 출력을 반환해야 합니다.

const output = '1001000 1100101 1101100 1101100 1101111 100000 1010111
1101111 1110010 1101100 1100100';

해결 접근 방식

이 문제는 다음 세 가지 핵심 메서드만 활용하면 간단하게 해결할 수 있습니다.

1. split('') — 문자열을 한 글자씩 잘라 개별 문자 배열로 만듭니다.
2. charCodeAt(0) — 각 문자의 유니코드 코드 포인트(정수 값)를 반환합니다.
3. toString(2) — 숫자를 2진수 문자열로 변환합니다.

각 문자를 2진수로 변환한 뒤, join(' ') 메서드로 공백을 사이에 두고 하나의 문자열로 연결하면 원하는 결과를 얻을 수 있습니다.

구현 예제

전체 코드는 다음과 같습니다.

const str = 'Hello World';
const textToBinary = (str = '') => {
    let res = '';
    res = str.split('').map(char => {
        return char.charCodeAt(0).toString(2);
    }).join(' ');
    return res;
};
console.log(textToBinary('Hello World'));

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100

동작 원리 살펴보기

'H'의 경우를 예로 들어 보겠습니다. 'H'.charCodeAt(0)은 유니코드 값인 72를 반환하고, (72).toString(2)는 이를 2진수 문자열 '1001000'으로 변환합니다. 나머지 문자들도 동일한 과정을 거쳐 공백으로 구분된 최종 문자열이 완성됩니다.

참고로 한글이나 이모지처럼 2바이트 이상으로 표현되는 문자도 charCodeAt()은 UTF-16 코드 유닛 기준으로 동작하므로 대부분 정상적으로 변환되지만, 서러게이트 페어(surrogate pair)가 필요한 일부 특수 문자는 별도 처리가 필요할 수 있다는 점을 기억해 두면 좋습니다.