問題タブ [memorystream]

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.

0 投票する
1 に答える
839 参照

c# - 任意のバイナリデータをバイナリシリアル化クラスに格納するにはどうすればよいですか?

アプリケーションにC#/。NETを使用すると、メインデータモデルに「バイナリ」(テキストではなく)コンテンツを表す一連のクラスがあります。私は次のような継承設定を持っています:

代替テキスト

基本的に、抽象クラスには、任意のバイナリデータを格納BinaryContentするが含まれています。MemoryStreamそのデータはディスク上のファイルから読み取られます。保存する予定のバイナリデータの各タイプは、やなどの派生タイプにImageContentなりFontContentます。これらの派生型は、のバイナリデータを解釈しBinaryContent.Contentます。ImageContentたとえば、BitmapImageMemoryStreamから(ImageSourceに格納された)を作成します。FontContentもちろん、からフォントを作成しますBinaryContent.Content。基本的にコンテンツファイル(つまり画像)のコピーを保存できるようにし、ファイルがディスク上の特定の場所に何度もあることに依存する必要がないようにするために、この方法を選択しました。

また、バイナリシリアル化を使用して、これらのクラスのインスタンスを「プロジェクトファイル」に保存しています。私はこれを基本的にすべてを一緒に「パッケージ化」するために行いました。MemoryStreamを逆シリアル化しようとすると、問題が発生するようです。MemoryStreamからイメージを作成すると、問題が発生します。デシリアライズ後に次のメソッドを実行すると、FileFormatexceptionが発生します。

メッセージは次のFileFormatExceptionとおりです。「画像をデコードできません。画像ヘッダーが破損している可能性があります。」内部例外:「HRESULTからの例外:0x88982F61」

今のところ私の一番の推測は、BinaryContent.Contentシリアル化または逆シリアル化中にデータが破損する何かが起こっているということです。

これは私に2つの質問をするように導きます。

  1. この問題を解決するための提案はありますか?
  2. (逆)シリアル化される任意のバイナリデータを格納する他の提案された方法はありますか?

私の質問については、遠慮なく説明を求めてください。

ありがとう。

0 投票する
2 に答える
8365 参照

c# - ByteArrayのMemoryStreamへの配列

ByteArrayの配列を返すメソッドがあります。

MemoryStreamそして私はそれを:に書く必要があります

byteArrayの配列には要素が1つしかないため、これはこれまでのところ機能しています。誰かが指摘して解決策を提供できるでしょうか:byteArrayの配列に複数の要素がある場合はどうなりますか?

現在のコードでは、byteArrayの最初の要素を取得して残りを破棄すると思いますが、必要MemoryStreamであり、多次元配列を取得することはできません。

0 投票する
4 に答える
1703 参照

c# - C#非同期ソケット接続を介したシリアル化されたオブジェクトを含むオブジェクトのサイズの送信

オブジェクトをシリアル化してネットワーク経由で送信したい。クラスのISerializeable属性とBinaryFormatterを使用して、オブジェクトをバイトに変換するように設定しました。オブジェクトを送信し、受信側で逆シリアル化できます。ただし、オブジェクトを再構築する前にオブジェクト全体を確実に保持するために、ストリームと一緒にサイズを送信したいと思います。最初の数バイトをサイズとして設定し、受信したデータが少なくともこの固定サイズであるかどうかを確認すると、それを読み取ってオブジェクトのフルサイズを取得できます。次に、受信したデータがオブジェクトのサイズ+固定サイズのバイトになるまで待つだけです。オブジェクトのサイズを最初の数バイトとして格納し、オブジェクトを残りのバイトとして格納するintを送信できるように、ストリーム内のデータをオフセットするにはどうすればよいですか?

0 投票する
2 に答える
1906 参照

c# - ネイティブバッファをMemoryStreamに変換します

私のC++\ CLIには、次のコードがあります。

MemoryStream(out_buf)、メモリストリームはメモリを再度割り当てますか、それとも単に所有権を取得しout_bufますか?

メモリを再度割り当てる場合MemoryStream、ネイティブバッファをに変換する方法はありMemoryStreamますか?

0 投票する
4 に答える
3161 参照

.net - MemoryStream は明示的に破棄する必要がありますか?

MemoryStream は管理されていないリソースであるため、常に破棄する必要がありますか?

与えられた:

したがって、MemoryStream オブジェクトの参照は失われます。このシナリオには、try/finally ブロック (または using ステートメント) が必要ですか?

0 投票する
3 に答える
349 参照

c# - メモリ内のテキストを表現する最良の方法

共通の基本クラスから継承する 2 つのクラスがあります。

これらの特殊なクラスはそれぞれ、データベースからデータをロードして処理し、その情報をテキスト ファイルに保存します。

最初のクラスは、情報を XML ドキュメントとして表します。2 番目のクラスは、その情報をテキスト ファイルとして格納し、フィールドを区切り文字で区切ります。

私がやりたいことは、両方のクラスで使用できる基本クラスに単一の Save メソッドを記述することです。すべてのクラスがテキスト ファイルに書き込むため、データをメモリに格納するために共通の表現を使用することを考えていました。たとえば、最初のクラスは XmlDocument をその共通の表現に変換します。

これをメモリ、文字列、ストリームに格納する最良の方法は何ですか?

ありがとう

0 投票する
2 に答える
5062 参照

c# - Python の MemoryStream アナログ

C# の類似物が Python に存在しますかMemoryStream(これにより、何らかのソースから直接メモリにバイナリ データを書き込むことができます)。そして、どうやってそれを使うつもりですか?

0 投票する
5 に答える
2637 参照

c# - 関数が MemoryStream を返すことができるのに、なぜ MemoryStream nullable (MemoryStream?) を宣言できないのですか?

を返す関数がありますMemoryStream?。エラーが発生した場合は null です。次に、変数を宣言できないことがわかりましたMemoryStream?

型 'System.IO.MemoryStream' は、ジェネリック型またはメソッド 'System.Nullable' でパラメーター 'T' として使用するために、null 非許容値型である必要があります。

0 投票する
1 に答える
4750 参照

c# - C#BinaryReader.Read()は、最初はがらくたになります

私はここで私が間違っていることを理解しようとしています。バイナリリーダーを使用して、ストリームから最初の4バイトをInt32値に簡単に取得しようとしています。これにより、残りのデータが予想される期間がわかります。

出力は入力である必要がありますが、これを取得します(最初の文字が文字列から文字列に変わることに注意してください)

(これが非常に長い文字列であると想像してください

誰かが私が間違っていることを私に説明できますか?理想的には、2回目の読み取りは、読み取りバイトの合計が最初の4バイトの値と等しくなるまで続きます。このコードは、私が直面している問題を示すための単純化にすぎません。ストリームの位置は正しいようですが(4)、2から読み始めているようです。

0 投票する
3 に答える
1306 参照

c++ - wistreamを使用してファイルから読み取るのと同じように、メモリから読み取るにはどうすればよいですか?

前の質問で、ファイルからと同じようにメモリから読み取る方法を尋ねました。ファイル全体がメモリ内にあったので、同じように読みたかったのです。

私は自分の質問に対する答えを見つけましたが、実際には行をとして読む必要がありますwstring。ファイルで私はこれを行うことができます:

ファイルがASCIIであっても。

今、私は単にこの答えからの関数で私のstring行を変更しています。ただし、このメモリのチャンクをaと同じように扱う方法があれば、この行をsとして取得する方が高速な解決策になると思います。そして、私はこれが速い必要があります。wstringwistreamwstring

だから誰もがこのメモリのチャンクを?として扱う方法を知っていwistreamますか?