問題タブ [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.
c++ - C++: カスタム オブジェクトのシリアル化/逆シリアル化が失敗する
保存されたファイルからシリアル化されたオブジェクトを読み取る際に問題が発生しています。(以下のコードを参照)。
シリアライゼーション プロセスは「機能します」(とはいえ、おそらく非常に下手に書かれています)。ユーザーが std::ios::binary フラグを渡しているかどうかを知る方法がないため、whitespace
. (大量のピクセルデータの可能性が失われなかったので、メモリも節約できます。)
私の最初の試みはサンプルと同じように見えましたが、int
s はunsigned char
、下半分と上半分を s にビットパックしchar
、後でそれらを再組み立てすることを意図した s でした。
現在、すべてのデータをファイルに読み取ることができますが、チェックサム以外のデータの最初の部分を読み取ろうとすると、0 ( char
s を使用した場合) またはガベージ (sint
を使用した場合) が返されました。 )
シリアライゼーション:
逆シリアル化:
reflection - 複雑なオブジェクト グラフ内のすべての指定された型インスタンスをトラバースして検索する
(vb.Net 4.0 を使用) グラフがかなり複雑なオブジェクトがあるとします。オブジェクトには、プロパティ、配列、その他のコレクション、独自のプロパティとコレクションを持つサブクラスなどがあります。オブジェクト グラフ全体を完全に走査し、すべてのインスタンスを見つけたいと考えています。特定のタイプ T の、これらのインスタンスに対して特定の操作を実行します。オブジェクト グラフの完全なトラバーサルを実行する防弾方法はありますか? 振り返りがあっても、これはエラーが発生しやすい難しい作業のようです。
バイナリ シリアライゼーションについて疑問に思っていたのは、それがどんなに複雑であっても、かなり堅牢な方法でオブジェクトを複製しているように見えるからです。シリアル化する代わりに、指定された型 T のすべてのサブオブジェクトへの参照のリストを返すように、その手法を変更する方法はありますか? しかし、それは純粋な憶測に過ぎません。私は実行可能な解決策を受け入れる用意があります。
java - Java: リフレクションを使用して数値から列挙型をインスタンス化する
シグナリング プロトコルは、明確に定義された整数値を持つ列挙型を頻繁に使用します。例えば
インスタンスの列挙型クラス型と整数値のみを使用して、そのような値を対応する列挙型に逆シリアル化する方法を見つけようとしています。
各列挙型に静的な getEnumFromInt(int) 関数を追加する必要がある場合、この「インターフェイス」を定義して、列挙型の作成者が列挙型を確実にシリアル化できるようにする方法を教えてください。
どうすればこれを行うことができますか?
serialization - シリアル化されたデータを最小限に抑える方法 - バイナリのシリアル化には大きなオーバーヘッドがあります
シリアル化された整数をネットワーク経由で送信するときのメッセージ サイズを小さくしたいと考えています。以下のセクションでは、 buff.Length は 256 です - 効率的にするためにオーバーヘッドが大きくなります! どうすれば最小 (4 バイト + 最小オーバーヘッド) に減らすことができますか?
前もって感謝します、 --- KostaZ
c++ - 簡単なビットレベルのシリアル化
ビットのセットを含む何らかの構造 (できればテンプレート クラス) に、任意のビット サイズの (ユーザー定義の) 型を効率的にシリアル化/非シリアル化するための C++ API を探しています。良いスタートだと思いますが、などの組み込み型を追加するための関数/演算子は含まれていません。boost::dynamic_bitset
uint8_t
uint16_t
これを次の例のように機能させたい
ストリーム演算子は、状態依存のエンディアン動作でもサポートする必要があります。
Boost.Serialization と Boost.Endian (Boost Sandbox 内) についても知っています。そういうものをビットレベルまで拡張してほしい。
Ibellyboost::dynamic_bitset
のメンバ関数
と
ほとんどのユーザーにとってレベルが低すぎます。append
これらの新しい機能で再利用する必要があると思います。さらに多くの式テンプレートを最適化するには、dynamic_bitset
.
.net - 実行時の読み込みを高速化するための VS2010 ビルド時のシリアル化?
.NET4 の Visual Studio 2010 で、ビルド プロセスの一部としてクラスをインスタンス化、生成、およびバイナリ シリアル化する良い方法はありますか? 相互に関連するクラスの複雑なセットを毎回同じ「起動状態」にロードするのに数秒かかるアプリケーションを作成しています。シリアル化されたイメージからそれらをロードできれば、ロード時間は実質的になくなります。
私の質問は XNA に関するものではありませんが、最近、XNA フレームワークで Xbox プログラミングをいじってみました。フレームワークは、私が説明したことを正確に実行する興味深い前処理機能 (コンテンツ パイプライン) を追加します。メイン アプリケーションの重要なクラスをインスタンス化し、データを取り込むことができます (ビルド時の事前処理中にのみ使用される別のコード ブロックを使用)。処理)、展開ファイルにシリアル化されます。このシリアル化されたバージョンは実行時に再ロードされ、初期化のパフォーマンスが大幅に向上します。(XNAでは、このプロセスにより、私の質問には関係のないバイトオーダーの変更など、ターゲットプラットフォームの微調整も可能になります。)
手動で逆シリアル化を開始する必要があることはわかっていますが、その程度まで自動化されないことはわかっています-私の懸念はビルド側にあります。
XNA フレームワーク以外の VS2010 にこのようなものはありますか? これは T4 スタイルの codegen ではありません (実行時処理が必要ですが、おそらく外部ファイルを読み取るよりもパフォーマンスが高いでしょう)。また、これらのクラスを作成してディスクにダンプする別のプロジェクトを作成するだけでよいかどうかもわかりません。後で別のプロジェクトでそれらを安全にリロードします (おそらくいくつかの実験が必要です)。XNA Framework プラグインには多くの XNA 固有の関係があり、ロード側のプロセスは XNA のみであるため、XNA Framework プラグインをハイジャックすることはできません。
手頃な価格のサードパーティのプラグインを検討することに注意してください (これに 30 ドルや 40 ドルを支払うつもりはありませんが、数百ドルもするツールを購入するつもりはありません)。
c# - カスタム型を持つオブジェクトの C# シリアライゼーション プラクティス
たとえば、いくつかのカスタム タイプを作成しました。
などについても同様ですMass
。
Planet
また、これらのカスタム タイプをプロパティとして使用するカスタム オブジェクトもあります。
Planet
この場合Mass
のシリアル化のベスト プラクティスはTemperature
何Kelvin
ですかTemperature
? のようなカスタム インターフェイスを継承する必要がMass
あります。Temperature
IQuantity
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
- 等...
もしそうなら、私は十分だと思うまで各クライアントのどこかに受け取ったデータを保存し、それからそれを逆シリアル化しようとすべきですか?
ありがとうございました
c# - binaryFormatter.Deserialize(stream) : エラーのデバッグと修正
カスタム ファイル タイプのシリアル化と逆シリアル化に BinaryFormatter を使用しています。私は、同じファイルの読み取りと書き込みの両方を行うスタンドアロン アプリケーションと Web アプリケーションを持っています。スタンドアロン アプリは正常に動作していますが、Web アプリでファイルを読み取ると、例外がスローされます。問題は、何が起こっているのかを正確に確認できないことです。このエラーをデバッグまたは修正するにはどうすればよいですか?
タイプ 'System.String' のオブジェクトは、タイプ 'System.Decimal' に変換できません。
同じファイルがスタンドアロン アプリで正常に逆シリアル化されますか??