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

JavaScript에서 ASCII 문자열을 16진수(Hex) 코드로 변환하는 방법

이번 글에서는 ASCII 숫자를 나타내는 문자열을 입력받아, 각 문자에 해당하는 16진수(hexadecimal) 코드로 변환한 뒤 그 결과를 반환하는 JavaScript 함수를 작성해 보겠습니다.

예를 들어 입력된 ASCII 문자열이 다음과 같다고 가정해 보겠습니다.

const str = '159';

이 경우 각 문자의 아스키 코드를 16진수로 변환하면 결과는 313539가 되어야 합니다. ('1' → 31, '5' → 35, '9' → 39)

구현 예제

다음은 이를 구현한 코드입니다.

const str = '159';

const convertToHexa = (str = '') => {
   const res = [];
   const { length: len } = str;
   for (let n = 0, l = len; n < l; n++) {
      const hex = Number(str.charCodeAt(n)).toString(16);
      res.push(hex);
   };
   return res.join('');
}

console.log(convertToHexa('159'));

코드 설명

이 함수의 동작 원리를 단계별로 살펴보면 다음과 같습니다.

1. 문자 하나씩 순회: for 루프를 사용해 문자열의 각 문자를 처음부터 끝까지 차례대로 확인합니다.

2. 아스키 코드 추출: charCodeAt(n) 메서드를 사용해 현재 위치의 문자에 해당하는 아스키(유니코드) 코드 값을 숫자로 얻습니다. 예를 들어 '1'의 아스키 코드는 49입니다.

3. 16진수 변환: toString(16) 메서드를 호출하여 해당 숫자를 16진수 문자열로 변환합니다. 49는 16진수로 '31'이 됩니다.

4. 결과 결합: 변환된 16진수 값들을 배열에 저장한 후, 마지막에 join('')으로 하나의 문자열로 합쳐 반환합니다.

실행 결과

위 코드를 콘솔에서 실행하면 다음과 같은 출력을 확인할 수 있습니다.

313539

이처럼 charCodeAt()toString(16)만 활용하면 별도의 외부 라이브러리 없이도 간단하게 ASCII 문자열을 16진수 코드로 변환할 수 있습니다. 필요에 따라 각 hex 값을 두 자리로 맞추기 위해 padStart(2, '0')을 추가로 적용하는 방법도 유용합니다.