JavaScript에서 ASCII를 16 진수로 변환

Nithin Krishnan 2023년10월12일
  1. JavaScript에서 ASCII 문자를 16 진수로 변환
  2. ASCII 문자열을 JavaScript에서 해당하는 16 진수로 변환
  3. 16 진수를 ASCII로 다시 변환
JavaScript에서 ASCII를 16 진수로 변환

정보 교환을위한 미국 표준 코드 (ASCII)를 개발하려는 주요 의도는 장치간에 데이터를 교환하는 것이 었습니다. ASCII는 사람이 읽을 수있는 문자가있는 코드 테이블이며 특정 숫자 (소위 ASCII 코드)에 매핑 된 각 문자로 구성됩니다. 컴퓨터에서 사용하는 이진수 시스템과 마찬가지로 우리는 오류없는 통신을 위해 채널을 통해 데이터를 전송하는 동안 16 진수 시스템을 사용합니다. ASCII는 사람이 읽을 수있는 형식으로 컴퓨터에서 내부적으로 다르게 사용됩니다. JavaScript를 사용하여 ASCII 값을 16 진수 값으로 변환하는 방법을 살펴 보겠습니다.

JavaScript에서 ASCII 문자를 16 진수로 변환

변환은 쉽고 코드에서 많은 단계가 필요하지 않습니다. ASCII 문자를 16 진수로 변환하는 코드를 살펴 보겠습니다.

window.onload =
    function() {
  convertASCIItoHex('A');
  convertASCIItoHex('n');
  convertASCIItoHex('!');
}

function convertASCIItoHex(asciiVal) {
  let asciiCode = asciiVal.charCodeAt(0);
  let hexValue = asciiCode.toString(16);
  console.log('0x' + hexValue);
}

출력:

0x41
0x6e
0x21

이 섹션에서는 ASCII 문자를 이에 상응하는 16 진수로 변환하는 방법을 다룹니다. 변환 프로세스는 다음과 같이 설명되어 있습니다.

  • JavaScript의window.onload()함수에서 ASCII 값을 JavaScript에서 16 진수로 변환하기 위해convertASCIItoHex()함수를 호출합니다. 페이지로드시window.onload()함수가 호출되어 페이지가로드되는 즉시 함수가 실행됩니다.
  • convertASCIItoHex()함수에서 변환해야하는 ASCII 값을 전달합니다. asciiVal.charCodeAt(0)convertASCIItoHex()함수에 전달 된 입력 값의 ASCII 코드를 매개 변수로 반환합니다. ASCII 테이블에는 사람이 읽을 수있는 문자 형식에 대한 매핑과 이와 관련된 코드가 포함되어 있습니다. 다음과 같이 보입니다.
    소수 육각 코드 상징 기술
    65 41 대문자 A
    66 42 대문자 B
    67 43 대문자 C
    68 44 대문자 D
    69 45 이자형 대문자 E
    70 46 에프 대문자 F
    71 47 대문자 G
    72 48 H 대문자 H
    73 49 나는 대문자 I
    74 4A 제이 대문자 J
    10 진수 열은 ASCII 값의 코드를 나타냅니다. 예를 들어A의 ASCII 코드는 65입니다.asciiVal.charCodeAt(0)함수는A값을 보유하는asciiVal의 ASCII 값을 반환합니다. 따라서 65를 반환합니다.asciiCode변수에 ASCII 코드를 저장합니다.
  • 매개 변수 값에 해당하는 ASCII 코드를 받으면 다음 단계는이를 16 진수로 변환하는 것입니다. asciiCode.toString(16)스 니펫에서.toString(16)함수는 16 진 값을 문자열로 리턴합니다. 16 진수 문자열 값을hexValue변수에 저장합니다.
  • 마지막 단계에서는 JavaScript의console.log()함수를 사용하여 전달 된 속성에 해당하는 16 진수를 콘솔합니다.

노트

  • 변환 된 16 진수 값에0x키워드를 추가하는 것이 이상하게 보일 수 있습니다. 숫자를 16 진수 값으로 식별하기 위해 JavaScript에서 따르는 일반적인 접근 방식입니다 (자세한 내용은 MSDN 문서 참조). 귀하의 비즈니스 목적을 위해, 우리는 이것을 피하고.toString(16)함수의 16 진수 값 출력을 따를 수 있습니다.

  • toString(16)함수는 JavaScript의 다목적 함수입니다. 우리는 그것을 다른 숫자 기반 시스템으로 변환하는 데 사용할 수 있습니다. 함수에 대한 매개 변수로 십진수 또는 기수를 전달해야합니다. ASCII 코드에 해당하는 이진을 기대하는 경우toString(2)함수는 십진 값에 해당하는 이진을 반환합니다. 이 함수는 이진 값을 반환하기 전에 객체를 문자열로 형변환합니다. 따라서.toString()의 반환 유형은 문자열입니다.

  • 위 코드는 하나의 문자 변환만을 고려합니다. 따라서convertASCIItoHex("HELLO")와 같은 입력으로 문자열을 제공하면 함수는 첫 번째 문자 “H"의 16 진수 값을 반환합니다. asciiVal.charCodeAt(0)charCode(0)함수에 의해 수행됩니다.

ASCII 문자열을 JavaScript에서 해당하는 16 진수로 변환

우리가 생활에서 얻는 일반적인 요구 사항은 문자열 전체를 문자가 아닌 16 진수 값으로 변환하는 것입니다. 다음 프로그램은 문자열을 입력으로 사용하고 각 문자에 해당하는 16 진수 문자열을 출력으로 반환합니다. 각 16 진수 값은 더 나은 가독성과 이해를 위해 공백 인' '로 구분됩니다.

window.onload =
    function() {
  convertASCIItoHex('Hello!');
  convertASCIItoHex('Good Morning World!!');
}

function convertASCIItoHex(asciiString) {
  let hex = '';
  let tempASCII, tempHex;
  asciiString.split('').map(i => {
    tempASCII = i.charCodeAt(0)
    tempHex = tempASCII.toString(16);
    hex = hex + tempHex + ' ';
  });
  hex = hex.trim();
  console.log(hex);
}

Ouput :

48 65 6c 6c 6f 21
47 6f 6f 64 20 4d 6f 72 6e 69 6e 67 20 57 6f 72 6c 64 21 21

여기서convertASCIItoHex()는 제공된 문자열 입력에 해당하는 16 진수 문자열 값을 반환합니다. String유형의 값을 리턴합니다. 16 진 코드 문자열은 가독성과 명확성을 위해 공백으로 구분됩니다. 우리가 따라 간 단계를 살펴 보겠습니다.

  • 이전 섹션에서 설명한대로 JavaScript의window.onload()함수를 호출 한 다음"Hello!"문자열을 전달하여convertASCIItoHex("Hello!")함수를 호출합니다. 매개 변수로.
  • convertASCIItoHex()함수에서 입력 문자열을 문자로 분할하여 처리하기 쉽도록합니다. 따라서이 단계에서"Hello!"문자열은 문자열 배열 인["H", "e", "l", "l", "o", "!"]로 변환됩니다.
  • 다음으로 javascript의.map()연산자를 사용하여 배열의 각 요소에 “ASCII에서 16 진수로 변환"을 적용합니다. 각 요소를 반복하고 각 요소에 대해 함수를 실행합니다. 함수를 인라인 함수 또는 화살표 함수로 전달합니다.
  • 함수에서charCodeAt(0)을 사용하여 현재 배열 요소의 ASCII 코드를 가져옵니다. 그런 다음 ASCII 코드 객체에서toString(16)을 적용하여 ASCII 값을 16 진수베이스로 변환합니다. 그런 다음 16 진수 값을 출력 배열 인hex배열로 푸시합니다. 가독성을 위해 연속 변환 사이에 공백을 사용합니다. ,또는;사용을 선호 할 수도 있습니다. 비즈니스 요구에 따라 분리기.
  • hex = hex + tempHex + ' '를 사용하면 각 요소 변환 후에 공백을 추가합니다. 따라서 최종 결과에는 후행 공백이 있습니다. 이를 제거하기 위해 javascript의.trim()함수를 사용합니다.
  • 마지막으로 변환 된 문자열 배열은console.log(hex)를 사용하여 콘솔에 로그인됩니다.

16 진수를 ASCII로 다시 변환

이제 16 진수 값이 준비되었으므로 발생하는 문제는 출력이 예상대로인지 확인하는 방법입니다. 매개 변수에 전달 된 ASCII 코드에 해당하는 ASCII 문자를 반환하는 JavaScript의fromCharCode(ASCIICode)함수를 사용하여 기능의 핵심을 달성합니다. 여기에서 다음 코드를 사용할 수 있습니다.

window.onload = function() {
  convertASCIItoHex('48 65 6c 6c 6f 21');
  convertASCIItoHex(
      '47 6f 6f 64 20 4d 6f 72 6e 69 6e 67 20 57 6f 72 6c 64 21 21');
} function convertHexToASCII(hexString) {
  let stringOut = '';
  hexString.split(' ').map((i) => {
    tempAsciiCode = parseInt(i, 16);
    stringOut = stringOut + String.fromCharCode(tempAsciiCode);
  });
  console.log(stringOut);
}

출력:

Hello!
Good Morning World!!

몇 가지 방법이 여기서 마법을 수행합니다. parseInt(i, 16)16의 입력을 10 진수로 변환합니다. 따라서이 방법으로 16 진수 값에 대한 ASCII 코드를 얻습니다. 그리고String.fromCharCode(tempAsciiCode)는이 함수에 매개 변수로 전달 된 ASCII 코드를 취하고 코드에 해당하는 ASCII 문자를 반환합니다.

비고

  • 가장 일반적으로 사용되는 사람이 읽을 수있는 ASCII 형식에는 알파벳, 숫자 및 특수 문자가 포함됩니다. JavaScript 코드로 이러한 문자 집합을 다룰 예정입니다. ACK : Acknowledge character, ETX : End of Text character 등과 같은 특정 ASCII 코드는 JavaScript에서 테스트 할 수 없습니다.
  • JavaScript 문자열 변수는 ES8 표준에 따라 최대253-1문자 길이를 포함 할 수 있습니다. 크롬에서는 약 512MB의 데이터, Firefox에서는 약 기가 바이트의 데이터에 해당합니다. 따라서 코드를 사용하여 더 긴 문자열 값을 변환 할 수 있습니다.