問題タブ [binary-serialization]

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 投票する
2 に答える
328 参照

c++ - C++: カスタム オブジェクトのシリアル化/逆シリアル化が失敗する

保存されたファイルからシリアル化されたオブジェクトを読み取る際に問題が発生しています。(以下のコードを参照)。

シリアライゼーション プロセスは「機能します」(とはいえ、おそらく非常に下手に書かれています)。ユーザーが std::ios::binary フラグを渡しているかどうかを知る方法がないため、whitespace. (大量のピクセルデータの可能性が失われなかったので、メモリも節約できます。)

私の最初の試みはサンプルと同じように見えましたが、ints はunsigned char、下半分と上半分を s にビットパックしchar、後でそれらを再組み立てすることを意図した s でした。

現在、すべてのデータをファイルに読み取ることができますが、チェックサム以外のデータの最初の部分を読み取ろうとすると、0 ( chars を使用した場合) またはガベージ (sintを使用した場合) が返されました。 )

シリアライゼーション:

逆シリアル化:

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

reflection - 複雑なオブジェクト グラフ内のすべての指定された型インスタンスをトラバースして検索する

(vb.Net 4.0 を使用) グラフがかなり複雑なオブジェクトがあるとします。オブジェクトには、プロパティ、配列、その他のコレクション、独自のプロパティとコレクションを持つサブクラスなどがあります。オブジェクト グラフ全体を完全に走査し、すべてのインスタンスを見つけたいと考えています。特定のタイプ T の、これらのインスタンスに対して特定の操作を実行します。オブジェクト グラフの完全なトラバーサルを実行する防弾方法はありますか? 振り返りがあっても、これはエラーが発生しやすい難しい作業のようです。

バイナリ シリアライゼーションについて疑問に思っていたのは、それがどんなに複雑であっても、かなり堅牢な方法でオブジェクトを複製しているように見えるからです。シリアル化する代わりに、指定された型 T のすべてのサブオブジェクトへの参照のリストを返すように、その手法を変更する方法はありますか? しかし、それは純粋な憶測に過ぎません。私は実行可能な解決策を受け入れる用意があります。

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

java - Java: リフレクションを使用して数値から列挙型をインスタンス化する

シグナリング プロトコルは、明確に定義された整数値を持つ列挙型を頻繁に使用します。例えば

インスタンスの列挙型クラス型と整数値のみを使用して、そのような値を対応する列挙型に逆シリアル化する方法を見つけようとしています。

各列挙型に静的な getEnumFromInt(int) 関数を追加する必要がある場合、この「インターフェイス」を定義して、列挙型の作成者が列挙型を確実にシリアル化できるようにする方法を教えてください。

どうすればこれを行うことができますか?

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

datetime - Get-Date が DateTime オブジェクトを返すように見えるのに、BinarySerializer が PSObject を返すと示しているのはなぜですか?

シンプルなHashTableを見てみましょう:

キー StartDate にはDateTimeが含まれているようです。

ただし、バイナリ シリアル化を実行しようとすると、PSObjectがシリアル化できないという例外が発生します。

スロー:

次のように [DateTime] への明示的なキャストを使用すると、このメッセージは消え、すべてが機能します。

Get-Date が実際には DateTime を返さないか、またはここで動作している他の PowerShell の奇妙な点も同様です。

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

serialization - シリアル化されたデータを最小限に抑える方法 - バイナリのシリアル化には大きなオーバーヘッドがあります

シリアル化された整数をネットワーク経由で送信するときのメッセージ サイズを小さくしたいと考えています。以下のセクションでは、 buff.Length は 256 です - 効率的にするためにオーバーヘッドが大きくなります! どうすれば最小 (4 バイト + 最小オーバーヘッド) に減らすことができますか?

前もって感謝します、 --- KostaZ

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

c++ - 簡単なビットレベルのシリアル化

ビットのセットを含む何らかの構造 (できればテンプレート クラス) に、任意のビット サイズの (ユーザー定義の) 型を効率的にシリアル化/非シリアル化するための C++ API を探しています。良いスタートだと思いますが、などの組み込み型を追加するための関数/演算子は含まれていません。boost::dynamic_bitsetuint8_tuint16_t

これを次の例のように機能させたい

ストリーム演算子は、状態依存のエンディアン動作でもサポートする必要があります。

Boost.Serialization と Boost.Endian (Boost Sandbox 内) についても知っています。そういうものをビットレベルまで拡張してほしい。

Ibellyboost::dynamic_bitsetのメンバ関数

ほとんどのユーザーにとってレベルが低すぎます。appendこれらの新しい機能で再利用する必要があると思います。さらに多くの式テンプレートを最適化するには、dynamic_bitset.

0 投票する
0 に答える
114 参照

.net - 実行時の読み込みを高速化するための VS2010 ビルド時のシリアル化?

.NET4 の Visual Studio 2010 で、ビルド プロセスの一部としてクラスをインスタンス化、生成、およびバイナリ シリアル化する良い方法はありますか? 相互に関連するクラスの複雑なセットを毎回同じ「起動状態」にロードするのに数秒かかるアプリケーションを作成しています。シリアル化されたイメージからそれらをロードできれば、ロード時間は実質的になくなります。

私の質問は XNA に関するものではありませんが、最近、XNA フレームワークで Xbox プログラミングをいじってみました。フレームワークは、私が説明したことを正確に実行する興味深い前処理機能 (コンテンツ パイプライン) を追加します。メイン アプリケーションの重要なクラスをインスタンス化し、データを取り込むことができます (ビルド時の事前処理中にのみ使用される別のコード ブロックを使用)。処理)、展開ファイルにシリアル化されます。このシリアル化されたバージョンは実行時に再ロードされ、初期化のパフォーマンスが大幅に向上します。(XNAでは、このプロセスにより、私の質問には関係のないバイトオーダーの変更など、ターゲットプラットフォームの微調整も可能になります。)

手動で逆シリアル化を開始する必要があることはわかっていますが、その程度まで自動化されないことはわかっています-私の懸念はビルド側にあります。

XNA フレームワーク以外の VS2010 にこのようなものはありますか? これは T4 スタイルの codegen ではありません (実行時処理が必要ですが、おそらく外部ファイルを読み取るよりもパフォーマンスが高いでしょう)。また、これらのクラスを作成してディスクにダンプする別のプロジェクトを作成するだけでよいかどうかもわかりません。後で別のプロジェクトでそれらを安全にリロードします (おそらくいくつかの実験が必要です)。XNA Framework プラグインには多くの XNA 固有の関係があり、ロード側のプロセスは XNA のみであるため、XNA Framework プラグインをハイジャックすることはできません。

手頃な価格のサードパーティのプラグインを検討することに注意してください (これに 30 ドルや 40 ドルを支払うつもりはありませんが、数百ドルもするツールを購入するつもりはありません)。

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

c# - カスタム型を持つオブジェクトの C# シリアライゼーション プラクティス

たとえば、いくつかのカスタム タイプを作成しました。

などについても同様ですMass

Planetまた、これらのカスタム タイプをプロパティとして使用するカスタム オブジェクトもあります。

Planetこの場合Massのシリアル化のベスト プラクティスはTemperatureKelvinですかTemperature? のようなカスタム インターフェイスを継承する必要がMassあります。TemperatureIQuantity

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

c# - 大きなオブジェクトを使用したC#UDPオブジェクトのバイナリシリアル化

TCPとUDPの両方を同時に利用して、シリアル化されたオブジェクトをインターネット経由で転送するネットワークライブラリを作成しています。

ライブラリ(簡略化)は、クライアントとサーバーに分割されます。

TCP要素を書くとき、私は問題がありません。シリアル化されたオブジェクトを送信するたびに、その受信オブジェクトのサイズをオブジェクト自体の前に送信し、NetworkStreamに十分なバイトがキューに入れられるまで待ちます。

ただし、UDPサーバーの作成は少し難しいです。質問があります:

行うとき:

ここでサーバー側に何を期待できるかわかりません。この最初の例では、データが失われたり、間違って順序付けられたりすることはないと想定します。しかし、シリアル化したオブジェクトが複数のパケットに分割され、複数のクライアントから送信された場合はどうなりますか?たとえば、これら2つのイベントが同時に発生した場合:

  • クライアントAは10,000バイトのオブジェクトを送信します
  • クライアントBは12,000バイトのオブジェクトを送信します

それでは、このようなものをこの順序で(または十分に近い形で)受け取りますか?

  • クライアントAオブジェクトパート1/5
  • クライアントBオブジェクトパート1/6
  • クライアントAオブジェクトパート2/5
  • クライアントBオブジェクトパート2/6
  • 等...

もしそうなら、私は十分だと思うまで各クライアントのどこかに受け取ったデータを保存し、それからそれを逆シリアル化しようとすべきですか?

ありがとうございました

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

c# - binaryFormatter.Deserialize(stream) : エラーのデバッグと修正

カスタム ファイル タイプのシリアル化と逆シリアル化に BinaryFormatter を使用しています。私は、同じファイルの読み取りと書き込みの両方を行うスタンドアロン アプリケーションと Web アプリケーションを持っています。スタンドアロン アプリは正常に動作していますが、Web アプリでファイルを読み取ると、例外がスローされます。問題は、何が起こっているのかを正確に確認できないことです。このエラーをデバッグまたは修正するにはどうすればよいですか?

タイプ 'System.String' のオブジェクトは、タイプ 'System.Decimal' に変換できません。

同じファイルがスタンドアロン アプリで正常に逆シリアル化されますか??