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

JavaScript로 문자열을 16진수(HEX)로 변환한 뒤 숫자만 추출해 합산하는 방법

문제 정의

문자열을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 문자열의 모든 문자를 해당 아스키(ASCII) 코드의 16진수(hex) 값으로 변환한 뒤, 변환된 16진수 문자열에 포함된 숫자들만 추출하여 그 합계를 반환해야 합니다. 단, 16진수 표현에 등장하는 알파벳 문자(a~f)와 0은 무시합니다.

예제 코드

다음은 위 문제를 해결하는 코드입니다.

const str = "Hello, World!";
const toHexAndSum = (str = '') => {
  return str
  .split('')
  .map(c=>c.charCodeAt())
  .map(n=>n.toString(16))
  .join('')
  .split('')
  .filter(c=>'123456789'.includes(c))
  .map(d=>parseInt(d))
  .reduce((a, b)=>a+b, 0)
};
console.log(toHexAndSum(str));

코드 동작 원리

이 코드는 메서드 체이닝을 활용해 다음 단계로 동작합니다.

  • split('') — 문자열을 개별 문자 배열로 분리합니다.
  • charCodeAt() — 각 문자를 아스키 코드 숫자로 변환합니다.
  • toString(16) — 각 숫자를 16진수 문자열로 변환합니다.
  • join('') — 모든 16진수 문자열을 하나의 문자열로 연결합니다.
  • filter() — '1'부터 '9' 사이의 숫자 문자만 남기고 알파벳(a~f)과 0은 제거합니다.
  • reduce() — 필터링된 각 자릿수를 모두 더해 최종 합계를 계산합니다.

출력 결과

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

91

즉, "Hello, World!" 문자열의 각 문자를 16진수로 변환한 전체 문자열에서 숫자 부분만 모두 더하면 91이라는 결과가 나옵니다.