ホームページ  >  記事  >  ウェブフロントエンド  >  nodejsバッファを16進数に変換する

nodejsバッファを16進数に変換する

WBOY
WBOYオリジナル
2023-05-28 09:55:081638ブラウズ

Node.js では、Buffer はバイナリ データを処理するために使用されるクラスです。バイナリ データを扱う場合、多くの場合、データを 16 進形式に変換する必要があります。この記事では、Node.js の組み込みメソッドを使用して Buffer を 16 進数の文字列に変換する方法を紹介します。

  1. toString メソッドの使用

Buffer クラスには、Buffer オブジェクトを指定されたエンコード形式の文字列に変換できる toString メソッドが用意されています。指定されたエンコード形式が 16 進数の場合、toString メソッドは 16 進形式の文字列を返します。

以下はサンプル コードです:

const buffer = Buffer.from('hello', 'utf8');
const hexString = buffer.toString('hex');
console.log(hexString); // 68656c6c6f

まず、文字列「hello」を含む Buffer オブジェクトを作成します。次に、toString メソッドを呼び出し、パラメータとして「hex」を渡します。最後に、変換された 16 進文字列を出力します。

  1. readUInt8 メソッドを使用する

readUInt8 は、指定されたインデックスで 8 ビット符号なし整数を読み取り、それを 10 の A に変換できる Buffer クラスのインスタンス メソッドです。 16 進形式の文字列。

以下はサンプル コードです:

const buffer = Buffer.from('hello', 'utf8');
let hexString = '';
for (let i = 0; i < buffer.length; i++) {
  const hex = buffer.readUInt8(i).toString(16);
  hexString += (hex.length === 1 ? '0' + hex : hex);
}
console.log(hexString); // 68656c6c6f

まず、文字列「hello」を含む Buffer オブジェクトを作成します。次に、for ループを使用して、Buffer オブジェクト内の各バイトを反復処理します。ループ本体では、readUInt8 メソッドを使用して、現在のインデックスにある 8 ビットの符号なし整数を読み取り、それを 16 進数形式の文字列に変換します。最後に、16 進文字列の各バイトを完全な文字列に連結して出力​​します。

  1. toString メソッドと Buffer.slice メソッドを使用する

toString メソッドの使用に加えて、Buffer.slice メソッドを使用して新しいバッファを取得することもできます。オブジェクトを変換し、16 進形式の文字列に変換します。

以下はサンプル コードです:

const buffer = Buffer.from('hello', 'utf8');
const hexString = buffer.slice(0, buffer.length).toString('hex');
console.log(hexString); // 68656c6c6f

まず、文字列「hello」を含む Buffer オブジェクトを作成します。次に、slice メソッドを使用して、元の Buffer オブジェクトのすべてのバイトを含む新しい Buffer オブジェクトを取得します。最後に、新しい Buffer オブジェクトを 16 進形式の文字列に変換し、出力します。

概要

この記事では、Node.js のバッファ オブジェクトを 16 進形式の文字列に変換する 3 つの方法を紹介します。 toString メソッドを使用するのが最も簡単な方法であり、最もよく使用される方法です。 readUInt8 メソッドと Buffer.slice メソッドを使用すると、より多くのコードが必要になりますが、バイナリ データをより柔軟に処理できます。実際の開発では、さまざまなニーズに応じて適切な方法を選択してバイナリ データを処理できます。

以上がnodejsバッファを16進数に変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。