問題タブ [arraybuffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - オブジェクト内にラップされたArrayBufferのPOST
サーバーにポストバックできるように、ファイルクライアント側を取得するAJAXを少し作成しました。対象は。としてフェッチされますArrayBuffer
。ただし、保存のためにこのバイナリをサーバーにポストバックするときに、このファイルにいくつかのメタデータを含める必要があります。とオブジェクトを他の文字列でラップしようとしましたArrayBuffer
が、データサーバー側を調べると、の長さしか転送されていないようArrayBuffer
です。
私はArrayBuffer
この答えを介して文字列に変換しようとしました:
https://stackoverflow.com/a/11058858/449511。
ただし、私ArrayBuffer
のバイト長は519843であるため、例外が発生します。
Uncaught RangeError:ArrayBufferの長さからbyteOffsetを引いた値は、要素サイズの倍数ではありません。
私の理解ArrayBuffers
はまばらです。MDNドキュメントを読んだことがありますが、他に多くを見つけることができません。ArrayBuffer
これを文字列に変換する方法、またはオブジェクトにラップする方法について、さらにリソースやアイデアを提供してくれたことに感謝してArrayBuffer
います。
これが私のAJAXコードのスニペットです:
javascript - WebSocket と送信時の ArrayBuffers の再利用
Uint8Arrays と ArrayBuffers を使用してバイナリ データを送信しています。毎回新しい Uint8Array と ArrayBuffer を作成することで、正常に送信できます。
パフォーマンス上の目的 (ガベージの削減など) のために、次のメッセージに同じ Uint8Array と ArrayBuffer を再利用したいと考えています。この場合、各メッセージには同じフィールドがあるため、バイト長は問題になりません。上書きするだけです。
ただし、再利用すると、送信されるデータが正しくなくなります。
私の最善の推測は、前のメッセージがまだ送信中である間に、次のメッセージの ArrayBuffer を変更していることです。これが問題ですか?もしそうなら、ArrayBuffer が WebSocket で使用されなくなったことを検出してプールできる方法はありますか? そうでない場合、他に何がこの動作を引き起こす可能性がありますか?
ありがとう!
javascript - Web Audio APIは、さまざまなAudioBufferを追加/連結し、それらを1つの曲として再生します
私はWebAudioAPIで遊んでいて、曲の複数の部分をロードして新しいArrayBufferに追加し、そのArrayBufferを使用してすべての部分を1つの曲として再生しようとしています。次の例では、曲の異なる部分ではなく、同じ曲データ(小さなループ)を使用しています。
問題は、それが2回ではなく1回だけ再生されることであり、その理由はわかりません。
javascript - javascriptを使用してUint8Arrayを暗号化および復号化するにはどうすればよいですか?
このリンクからCryptoJSライブラリをダウンロードしたため、Uint8Arrayの暗号化と復号化が必要です。
ダミー文字列で aes 暗号アルゴリズムをテストしましたが、正常に動作しています。
今、私はそれを Uint8Array に実装したいと考えています。この配列は、ビデオ ファイル データを保持しています。
暗号化と復号化は文字列で機能するため、スタックオーバーフローに投稿されたこの質問を参照した文字列に変換する必要があります ここをクリック
暗号化のコードは次のとおりです。
しかし、コードを実行すると、次のエラーが発生します。
どうすれば機能しますか?
javascript - javascript単体テスト中にバイナリファイルをロードするにはどうすればよいですか?
私のアプリケーションでは、ユーザーは HTML5 のドラッグ アンド ドロップを使用してバイナリ ファイルを処理します。コードのその部分は正常に機能します。Chrome では、バイナリ ファイルをドラッグし、FileReader を使用して arrayBuffer を作成します。それはすべてうまくいくようです。この機能のテストを作成していますが、途方に暮れています。単体テストにバイナリ ファイルを読み込むにはどうすればよいですか? 私がテストしているコードでは、arrayBuffer だけが必要です。現在、arrayBuffer を手動で作成していますが、それは持続可能な解決策ではありません。テストを有効にするには、いつでも新しいバイナリ ファイルを投入して、新しいテストを作成できる必要があります。私のテスト環境は testacular+jasmine です。
javascript - jsでarraybufferと型付き配列を使用するには?
0 から 255 までの数字がたくさんあるので、それらを配列に格納したいと思います。Uint8array が最適ですが、使い方がわかりませんし、役に立つチュートリアルも見つかりません。それらが配列に格納されたら、それらを変更/削除する方法、または新しい要素を追加する方法は?
javascript - どのArrayBufferView
XHRを介してArrayBufferを取得していて、FileWriterを使用してFileSystemAPIに保存したいと思います。FileWriterはBlobを想定しており、BlobコンストラクターはArrayBufferを取得せず、ArrayBufferViewを取得します。
選択できるArrayBufferViewは多数ありますが、どれを使用するのが正しいかをどのように知ることができますか?
javascript - データチャネル経由で ArrayBuffer を送信: DOM 例外 12
2 つのブラウザ間でデータチャネルを介してデータを送信しようとしています。私のコードには次のものがあります。
この例では、datachannel が開いていて、正しく機能しています (そのタイプは WebKitDatachannel です)。送信すると、次の例外が表示されます。
それの何が問題なのですか?
javascript - ブラウザで WebSocket ArrayBuffer データを受信 - 代わりに文字列を受信
node.js サーバー アプリケーションとブラウザー クライアントがあります。データの送信ArrayBuffer
ブラウザ -> サーバーは完全に機能しますが、サーバー -> ブラウザでは文字列"[object ArrayBuffer]"
が受信されます。これは、Chrome と Firefox の両方の最新バージョンで発生します。
サーバ:
クライアント:
私は何を間違っていますか?
編集:
node.js websocket ソースから:
したがって、 を使用すると、必要に応じてUint8Array
を使用する代わりに、データを文字列として送信します。以下の回答のように、必要です。to を渡すことができないため、サーバーでこれを行いました。sendBytes
sendBytes
Buffer
sendBytes
ArrayBuffer
sendBytes
今では動作します。
結論:
Chrome と Firefox の websocket.send()
はUint8Array
バッファをバイナリ データとして送信しますが、node.js の websockets はデータとして送信するようで、バイナリを送信するにはバッファstring
が必要です。Buffer
javascript - BlobからArrayBufferに移動する方法
私はBlobを研究していましたが、ArrayBufferがある場合、次のようにこれをBlobに簡単に変換できることに気付きました。
私が今持っている質問は、BlobからArrayBufferに移行することは可能ですか?