【初心者向け】JavaScriptでバイナリ変換をマスターしよう!3つの方法とサンプルコード
JavaScript で整数をバイナリに変換する方法
toString(2) メソッドを使う
これは最も簡単で基本的な方法です。以下のコードのように、toString(2)
メソッドを使って整数をバイナリ文字列に変換できます。
const num = 10;
const binaryString = num.toString(2);
console.log(binaryString); // 出力: 1010
この方法は、小数点以下の部分は切り捨てられます。また、符号付きの整数の場合、負の数は符号付きバイナリで表現されます。
ビットシフト演算子を使って、より詳細な制御を行うことができます。以下のコードは、32ビット整数 num
をバイナリ文字列に変換する例です。
const num = 10;
let binaryString = "";
for (let i = 31; i >= 0; i--) {
const bit = (num >> i) & 1;
binaryString += bit;
}
console.log(binaryString); // 出力: 1010
この方法は、各ビットを個別に操作できるので、符号なしバイナリへの変換や、特定のビット列の抽出などに役立ちます。
ArrayBuffer と DataView を使う
より高度な方法として、ArrayBuffer
と DataView
オブジェクトを使って、バイナリデータを直接操作することができます。この方法は、パフォーマンスが重要だったり、より複雑なバイナリデータの処理が必要な場合に適しています。
以下のコードは、32ビット整数 num
をバイナリデータに変換し、それをバイナリ文字列として表示する例です。
const num = 10;
const buffer = new ArrayBuffer(4);
const dataView = new DataView(buffer);
dataView.setInt32(0, num);
const binaryString = Array.from(new Uint8Array(buffer))
.map(b => b.toString(2).padStart(8, "0"))
.join("");
console.log(binaryString); // 出力: 00000000000000000000000000001010
この方法は、より複雑ですが、柔軟性とパフォーマンスの点で優れています。
補足
- 上記のコード例はあくまでも基本的な例です。状況に応じて、エラー処理やフォーマット調整などの処理を追加する必要があります。
- バイナリデータの処理は、複雑な場合があります。詳細については、JavaScript のドキュメントや、バイナリデータの処理に関する専門資料を参照してください。
toString(2) メソッドを使う
const num = 10;
const binaryString = num.toString(2);
console.log(binaryString); // 出力: 1010
ビットシフト演算子を使う
const num = 10;
let binaryString = "";
for (let i = 31; i >= 0; i--) {
const bit = (num >> i) & 1;
binaryString += bit;
}
console.log(binaryString); // 出力: 1010
ArrayBuffer と DataView を使う
const num = 10;
const buffer = new ArrayBuffer(4);
const dataView = new DataView(buffer);
dataView.setInt32(0, num);
const binaryString = Array.from(new Uint8Array(buffer))
.map(b => b.toString(2).padStart(8, "0"))
.join("");
console.log(binaryString); // 出力: 00000000000000000000000000001010
これらのコード例は、それぞれ異なる方法で整数をバイナリに変換する方法を示しています。どの方法を使用するかは、状況やニーズによって異なります。
JavaScriptで整数をバイナリに変換するその他の方法
ライブラリを使う
いくつかのライブラリは、整数をバイナリに変換する機能を提供しています。例えば、以下のようなライブラリがあります。
これらのライブラリを使用すると、より簡単に複雑なバイナリデータの処理を行うことができます。
カスタム関数を使う
独自の関数を作成して、整数をバイナリに変換することもできます。これは、特定のニーズに合わせた変換が必要な場合に役立ちます。
以下のコードは、カスタム関数を使って32ビット整数を符号なしバイナリに変換する例です。
function toUnsignedBinaryString(num) {
if (num < 0) {
return "";
}
let binaryString = "";
while (num > 0) {
const bit = num % 2;
binaryString = bit + binaryString;
num >>= 1;
}
return binaryString.padStart(32, "0");
}
const num = 10;
const binaryString = toUnsignedBinaryString(num);
console.log(binaryString); // 出力: 00000000000000000000000000001010
btoa()
関数は、バイナリデータをBase64エンコーディングに変換します。このエンコーディングは、バイナリデータを文字列に変換する一種の方法です。その後、atob()
関数を使って、Base64エンコーディングされた文字列をバイナリデータに戻すことができます。
以下のコードは、btoa()
関数を使って32ビット整数をBase64エンコーディングに変換し、それをバイナリ文字列に変換する例です。
const num = 10;
const base64String = btoa(String.fromCharCode(num & 0xFF, (num >> 8) & 0xFF, (num >> 16) & 0xFF, num >> 24));
const binaryString = Array.from(base64String)
.map(c => c.charCodeAt(0).toString(2).padStart(8, "0"))
.join("");
console.log(binaryString); // 出力: 00000000000000000000000000001010
この方法は、バイナリデータをコンパクトな形式で表現したい場合に役立ちます。
javascript numbers