JavaScriptで文字列をバイナリ(2進数)表現に変換する方法
本記事では、JavaScriptを使って文字列をバイナリ(2進数)表現に変換する方法を解説します。具体的には、文字列を唯一の引数として受け取り、そのバイナリ表現を構築して返す関数を作成します。
実装のポイント
文字列を1文字ずつ処理し、各文字のUnicodeコードポイント(UTF-16コードユニット)を取得して、それを2進数の文字列に変換します。JavaScriptでは以下のメソッドを組み合わせることで簡単に実現できます。
- String.prototype.split():文字列を1文字ずつ配列に分解する
- String.prototype.charCodeAt():指定位置の文字のコード値を取得する
- Number.prototype.toString(2):数値を2進数の文字列に変換する
変換例
たとえば、入力文字列が次の場合:
const str = 'Hello World';
出力は各文字のバイナリ表現がスペース区切りで連結された、以下のような文字列になります。
const output = '1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100';
ここで「100000」はスペース文字(コード値32)、「1001000」は「H」(コード値72)の2進数表現です。
サンプルコード
実際のコードは以下のとおりです。
const textToBinary = (str = '') => {
return str
.split('')
.map(char => char.charCodeAt(0).toString(2))
.join(' ');
};
console.log(textToBinary('Hello World'));
コードの解説
split('')で文字列を1文字ずつの配列に分割します。map()を使って、各文字に対してcharCodeAt(0)でコード値を取得し、toString(2)で2進数文字列へ変換します。join(' ')で各バイナリ文字列をスペース区切りで結合し、最終的な結果を返します。
実行結果
コンソールには以下が出力されます。
1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100
補足:固定桁数で出力したい場合
用途によっては、各バイトを8桁に揃えたいケースもあります。その場合は padStart() を使うと便利です。
const textToBinary8bit = (str = '') => {
return str
.split('')
.map(char => char.charCodeAt(0).toString(2).padStart(8, '0'))
.join(' ');
};
console.log(textToBinary8bit('Hello World'));
// 01001000 01100101 01101100 01101100 01101111 00100000 01010111 ...
このように、split・map・charCodeAt・toString を組み合わせれば、わずか数行のコードで文字列からバイナリへの変換を実現できます。逆にバイナリから文字列へ戻す場合は、parseInt(bin, 2) と String.fromCharCode() を組み合わせてください。
-
JavaScriptの二分木(バイナリツリー)とは?基本概念と重要用語を徹底解説
二分木(バイナリツリー)は、データの格納を目的として使用される特殊なデータ構造です。最大の特徴は、各ノードが持てる子ノードの数が2つまでという条件にあります。二分木は、整列済み配列と連結リストの両方の長所を兼ね備えた構造です。検索はソートされた配列と同等の速さで行え、データの挿入や削除も連結リストと同様に高速に実行できます。そのため、大量のデータを効率的に扱いたい場合に非常に有用なデータ構造といえます。以下は、二分木の構造を示したイラストです。図には、このあと解説する重要な用語も含まれています。二分木における重要な用語二分木を理解するうえで押さえておきたい、主要な用語を以下にまとめました。パス
-
JavaScriptで文字列を真偽値(Boolean)に変換する方法
JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style> body { font-family: &