1. ホーム
  2. javascript

[解決済み] javascriptのArrayBuffer、何のためにあるのでしょうか?

2022-03-14 19:51:33

質問

遅ればせながら、あるいは日本酒のせいかもしれませんが、先ほど ArrayBuffer で、本当に役に立つことが一つも思いつきません。

誰か教えてください。

画像を使わない用途で、誰か思い当たるものはありますか?

どのように解決するのですか?

基本的にArrayBufferはバイナリデータを保持するために使用されます。例えば、画像のバイナリデータなどです。

他の言語では、バッファは非常に有用であることが証明されています。もちろん、他のデータ型に比べると理解や使い方が少し難しいですが。

ArrayBufferは、JPG画像のデータ(RGBバイト)を取得し、アルファバイト(つまりRGBA)を追加してpngを生成するために使用できます。

Mozillaのサイトでは、ArrayBufferのちょっとした使い方が紹介されています。 こちら

<ブロッククオート

複雑なデータ構造を扱う

1つのバッファに、異なるタイプの複数のビューを組み合わせることで、より効率的な運用が可能になります。 バッファ内の異なるオフセットから開始することで、対話することができます。 複数のデータ型を持つデータオブジェクトを これにより、例えば の複雑なデータ構造を扱うことができます。 WebGL データファイルです。 を使用する際に必要なC言語の構造体です。 js-ctypes .

このC言語の構造体を考えてみましょう。

struct someStruct {  
  unsigned long id;  
  char username[16];  
  float amountDue;  
};  

この形式のデータを含むバッファには、次のようにアクセスすることができます。

var buffer = new ArrayBuffer(24);  

// ... read the data into the buffer ...  

var idView = new Uint32Array(buffer, 0, 1);  
var usernameView = new Uint8Array(buffer, 4, 16);  
var amountDueView = new Float32Array(buffer, 20, 1);  

そして、例えば、支払期限にアクセスするために amountDueView[0] .

データ構造アライメント C言語の構造体では プラットフォームに依存します。これらに対する注意や配慮をする のパディングの違いです。