ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejsバイトを相互に変換する方法
Node.js は、JavaScript 言語を利用した人気の開発プラットフォームであり、大規模でスケーラビリティの高い Web アプリケーションの構築に使用できます。 Node.js ではバイナリ データの処理が非常に一般的であるため、Node.js を使用してバイト変換を実行することも非常に重要なトピックです。
バイトから HexString への
Node.js では、バイト配列を 16 進文字列に変換するのは非常に簡単です。 Buffer クラスを使用して処理できます。以下に、バイト配列を 16 進文字列に変換するサンプル コードを示します。
const buff = Buffer.from([0x12, 0x34, 0x56, 0x78]); const hexString = buff.toString('hex'); console.log(`hexString: ${hexString}`); // hexString: 12345678
Buffer.from メソッドは、配列をパラメータとして受け取り、これらのバイトを含む Buffer インスタンスを返します。指定された長さの空の Buffer インスタンスを渡し、fill メソッドを使用してそれを埋めることができます。必要に応じて、slice() メソッドを使用して必要な部分をインターセプトすることもできます。
toString() メソッドはオプションのエンコード パラメータを受け入れます。ここでは 16 進エンコードを使用します。このコード例は 16 進数の文字列を出力し、その出力が 12345678 であることがわかります。
HexString to Byte
Node.js では、16 進数文字列をバイト配列に変換することも非常に簡単で、この 16 進数文字列を Buffer クラスにインポートするだけです。以下は、16 進文字列をバイト配列に変換するサンプル コードです。
const hexString = 'ab12fde9'; const byteArr = Buffer.from(hexString, 'hex'); console.log(`byteArr: ${byteArr}`); // byteArr: <Buffer ab 12 fd e9>
Buffer.from メソッドの最初のパラメーターは文字列型で、どこから取得するかを示します。ここでは、配列ではなく 16 進文字列として指定します。
2 番目のパラメータはオプションで、最初のパラメータをデコードするために使用するエンコーディングを示します。ここでは 16 進数に設定します。
バイト配列を 10 進数に変換する
Node.js では、バイト配列を 10 進数に変換することも非常に簡単です。この機能を実現するには、ArrayBuffer クラスと DataView クラスを使用できます。以下は、バイト配列を 10 進数に変換するサンプル コードです。
const byteArr = new Uint8Array([0x12, 0x34, 0x56, 0x78]); const buffer = new ArrayBuffer(4); const dataView = new DataView(buffer); byteArr.forEach((item, index) => { dataView.setUint8(index, item); }); const decNum = dataView.getUint32(0, false); console.log(`decNum: ${decNum}`); // decNum: 305419896
このサンプル コードでは、ArrayBuffer クラスを使用してサイズ 4 のバッファーを作成します。次に、DataView クラスを使用して、このバッファー内のデータの読み取りと書き込みを行いました。
まず、byteArr という Uint8Array 型のオブジェクトを作成し、それを変換するバイト配列に設定します。
次に、buffer および dataView という名前の Buffer および DataView インスタンス オブジェクトを作成しました。次に、DataView の setUint8() メソッドを使用して、byteArr 内の各要素をバッファに書き込みます。
最後に、DataView の getUint32() メソッドを使用して、バッファ内のデータを読み取り、10 進数を返します。このサンプル コードの出力は 305419896 です。
10 進数をバイト配列に変換する
同様に、Node.js では、10 進数をバイト配列に変換するのは非常に簡単です。 DataView クラスの setUintX() メソッドを使用するだけです。以下は、10 進数をバイト配列に変換するサンプル コードです。
const decNum = 305419896; const buffer = new ArrayBuffer(4); const dataView = new DataView(buffer); dataView.setUint32(0, decNum, false); const byteArr = new Uint8Array(buffer); console.log(`byteArr: ${byteArr}`); // byteArr: Uint8Array [ 18, 52, 86, 120 ]
このサンプル コードでは、DataView の setUint32 メソッドを使用して、10 進数を新しい ArrayBuffer インスタンスに書き込みます。次に、この ArrayBuffer インスタンスを Uint8Array に渡してバイト配列に変換します。
このサンプルコードの出力結果は[18, 52, 86, 120]の値を持つバイト配列です。
概要
Node.js では、バイトから HexString への変換、HexString からバイトへの変換、10 進数からバイト配列への変換、バイト配列から 10 進数への変換などの操作が非常に一般的です。 Node.js が提供する Buffer クラスと DataView クラスを使用して、これらの操作を実装できます。この記事がお役に立てば幸いです!
以上がNodejsバイトを相互に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。