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 コード)で構成されます。コンピュータで使用される 2 進数の基数システムと同様に、エラーのない通信のためにチャネルを介してデータを送信する際に 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() 関数で、JavaScript の ASCII 値を 16 進数に変換するための convertASCIItoHex() 関数を呼び出します。window.onload() 関数はページの読み込み時に呼び出されるため、ページが読み込まれるとすぐに関数が実行されます。
  • convertASCIItoHex() 関数で、変換する必要のある ASCII 値を渡します。asciiVal.charCodeAt(0) は、convertASCIItoHex() 関数で渡された入力値の ASCII コードをパラメーターとして返します。ASCII テーブルには、人間が読める形式の文字へのマッピングとそれに関連付けられたコードが含まれています。次のようになります。
    10 進数 HEXCODE シンボル 説明
    65 41 A 大文字 A
    66 42 B 大文字 B
    67 43 C 大文字 C
    68 44 D 大文字 D
    69 45 E 大文字の E
    70 46 F 大文字の F
    71 47 G 大文字の G
    72 48 H 大文字の H
    73 49 大文字 I
    74 4A J 大文字の J
    10 進列は、ASCII 値のコードを表します。たとえば、A の ASCII コードは 65 です。関数 asciiVal.charCodeAt(0) は、値 A を保持している asciiVal の ASCII 値を返します。したがって、65 を返します。ASCII コードを asciiCode 変数に格納します。
  • パラメータ値に対応する 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 の多目的関数です。これを使用して、さまざまな基数システムに変換できます。10 進数の基数または基数をパラメーターとして関数に渡す必要があります。ASCII コードに相当するバイナリを楽しみにしている場合、toString(2) 関数は 10 進値に相当するバイナリを返します。この関数は、バイナリ値を返す前に、オブジェクトを文字列にタイプキャストします。したがって、.toString() の戻りタイプは文字列です。

  • 上記のコードは、1 文字の変換のみを考慮しています。したがって、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 進文字列値を返します。タイプ文字列の値を返します。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 文字、ETX:End ofText 文字などの特定の ASCII コードを JavaScript でテストすることはできません。
  • JavaScript 文字列変数は、ES8 標準に従って最大 253-1 文字の長さを保持できます。これは、Chrome では約 512 MB のデータ、Firefox では約 1 ギガバイトのデータに相当します。したがって、コードを使用して、より長い文字列値を変換できます。