JavaScriptでバイナリ文字列を元のテキストに変換する方法
はじめに
本記事では、バイナリコードを表す文字列を受け取り、それを対応するアルファベットの文字列に変換して返すJavaScript関数の作成方法を解説します。
例えば、次のようなバイナリ入力文字列があったとします。
const str = '1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100';
この場合、期待される出力は次のとおりです。
const output = 'Hello World';
変換の仕組み
バイナリから文字への変換は、以下の流れで行います。
- split(' ')を使って、スペースで区切られた各バイナリ値を配列に分割する
- parseInt(値, 2)で、2進数の文字列を10進数の数値に変換する
- String.fromCharCode()で、数値を対応する文字に変換する
- join('')で、すべての文字を1つの文字列に連結する
実装例
実際のコードは次のとおりです。
const str = '1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100';
const binaryToString = (binary = '') => {
let strArr = binary.split(' ');
const str = strArr.map(part => {
return String.fromCharCode(parseInt(part, 2));
}).join('');
return str;
};
console.log(binaryToString(str));
出力結果
コンソールには次のように出力されます。
Hello World
コードの解説
このコードのポイントは以下のとおりです。
- parseInt(part, 2): 第2引数に「2」を指定することで、文字列を2進数として解釈し、10進数の数値に変換します。例えば「1001000」は10進数の「72」になります。
- String.fromCharCode(72): Unicodeコードポイント「72」に対応する文字「H」を返します。
- map()とjoin(''): 各バイナリ値を文字に変換した後、それらを空白なしで連結して1つの文字列を作成します。
なお、「100000」はスペース(空白文字)を表すため、変換結果には単語間のスペースも正しく反映されます。この手法を応用すれば、任意のバイナリデータをテキストに復元することが可能です。
-
JavaScriptの二分木(バイナリツリー)とは?基本概念と重要用語を徹底解説
二分木(バイナリツリー)は、データの格納を目的として使用される特殊なデータ構造です。最大の特徴は、各ノードが持てる子ノードの数が2つまでという条件にあります。二分木は、整列済み配列と連結リストの両方の長所を兼ね備えた構造です。検索はソートされた配列と同等の速さで行え、データの挿入や削除も連結リストと同様に高速に実行できます。そのため、大量のデータを効率的に扱いたい場合に非常に有用なデータ構造といえます。以下は、二分木の構造を示したイラストです。図には、このあと解説する重要な用語も含まれています。二分木における重要な用語二分木を理解するうえで押さえておきたい、主要な用語を以下にまとめました。パス
-
JavaScriptで文字列を真偽値(Boolean)に変換する方法
JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style> body { font-family: &