問題タブ [bindata]
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.
mongodb - Scala を使用した MongoDB からの Bindata のデコード
MongoDB データベースに保存されている BinData をデコードしようとしています。これは偽の MAC アドレス (11:22:33:44:55:66) であり、MongoDB (BinData(0,ESIzRFVm)) に BinData として保存されており、元に戻す方法がわかりません。Base64 デコーディング、HEX デコーディング、その他いくつかの方法を試しました。
これは一般的なデコードの問題であるため、プログラミングの問題ではありません... BinData がどのようにエンコードされ、どのエンコードが行われるかはわかりません。では、どうすれば MongoDB の Bindata をデコードできるのでしょうか?
mongodb - mongorestore を使用して binData フィールドで oplog を再生するとエラーが発生する
オプション --oplogReplay を指定して mongorestore を使用して oplog を再生すると、mongorestore が binData フィールドの set 操作を処理できないという奇妙なエラーが見つかりました。これを行うと、同じエラーが発生する可能性があります。
テストデータを挿入します。
/li>binData フィールドを更新します。
/li>他のフィールドを更新する
/li>oplogで確認する
次の応答が表示される場合があります。
/li>これら 2 つの oplog をダンプして再生します
bash シェルの場合:
この後、データが期待どおりではないことがわかります。自分の中で、データはこれに変わります。
サイズ フィールドは本当に正しいのですが、データ フィールドが正しくありません。
最も奇妙なことは、 oplog を1 つだけダンプして再生すると、データが正しいことです。
oplog が再生された後、「データ」フィールドは非常に正確です。
なぜこの奇妙なことが起こるのですか?
ruby - BinData の使用方法
バイナリ ファイルを解析しようとしていますが、BinDataを正しく使用する方法がわかりません。
バイナリのセットアップ方法は次のようになります。
- 最初の 4 バイト (UINT32) は、プロパティ名の長さを表します。
- 次の 8 * 長さは、プロパティ名を (文字列として) 表します。
- 次の 4 バイト (UINT32) は、プロパティ タイプの長さを表します。
- 次の 8 * 長さは、プロパティ タイプを (文字列として) 表します。
- 次の 8 バイト (UINT64) は、データの長さを表します。
- この後、データは任意のバイト数になる可能性があります (データのタイプに応じて、int (4)、string (4 * len)、float (4)、または配列)。
この後、プロセスは次のプロパティで繰り返されます。
私の質問は次のとおりです。
MyBinDataClass.read() を呼び出すとき、ファイル全体ではなく、読み取る正しい部分をどのようにフィードするのですか? また、各プロパティが実際にどのくらいの長さなのかわからないため (タイプによって異なります)、どうすれば適切に分割できますか? ?
単一の BinData でさまざまなプロパティ タイプを処理するにはどうすればよいですか?
ruby - Ruby での BinData レコードの構造化
選択肢がまさにここで必要なものかどうかはわかりませんが、何をしようとしているのかを説明します。私は正常に動作する次の BinData 構造を持っています。
ただし、:data_len を取得したら、実際のデータを取得する必要があります。次に来るものをどのように処理するかは、:type 文字列の値によって異なります。
- type が "IntProperty" の場合、次の 4 バイト (int32) は int です。
- type が "FloatProperty" の場合、次の 4 バイト (float_32) は float です。
- type が "StringProperty" の場合、次の 4 バイト (int32) は int (文字列の len) であり、次の (len * 8) は文字列そのものです。
- type が "ArrayProperty" の場合、次の 4 バイト (int32) は int (配列の len) であり、次のバイト数は多くの Property オブジェクト (配列に格納するため) の配列の len です。
これらのパスをナビゲートして BinData::Record を適切に設定する方法を理解するのを手伝ってくれる人はいますか?
ruby - BinData で読み取るときにバイトをスキップする
だから私はそのようなレコードを持っています:
:name が特定の値に等しい場合にのみ、:name_len と :name を読み取った後、レコードからの読み取りを停止する方法はありますか? それとも、Record を含むファイルの読み取りを開始すると、最後まで実行する必要があるのでしょうか?
:onlyif を使用して残りのすべてをスキップできることはわかっていますが、その後すべてに :onlyif を配置する方法はありますか? 選択肢に :onlyif を付けることはできますか?
私が試したコード:
また、:name_len と :name の下のすべてを独自のレコードに入れ、これを実行してみました:
しかし、PropertyData レコードをこの上に配置すると (Property は PropertyData が何であるかを知る必要があるため)、PropertyData が Property が何であるかを知る必要があるため (その型で配列を埋めるため)、エラーが発生するため、これは機能しませんでした。 )。両者はお互いを使用しているため、両者がお互いの存在を知る方法はありません。
ruby - BinData を使用して読み取れなくなったら、ファイルからの読み取りを停止します
現在、BinData gemを使用してバイナリ ファイル形式を解析しています。どこで停止するかわからないことを除けば、問題なく動作します。ファイルは、BinData Records を使用して読み取ったプロパティに分割されています。16 ~ 18 個のプロパティが存在する可能性があります (取得するファイルによって異なります)。だから、私がこれを行うと:
16 個のプロパティがある場合は問題なく動作しますが、17 個まで上げると次のエラーが発生します。
私の質問は、どうすれば16回をすべて一緒に回避し、可能なすべてのプロパティを読み取るまで読み取らせ、このファイルの終わりエラーに達すると停止することができるかということです.
ruby - BinData レコードを異なるデータで再利用する
次の形式をとる複数の BinData レコードがある場合、いくつかの例を次に示します。
これらはすべて基本的に同じで、異なるタイプのオブジェクトを使用して配列を作成するだけです。これらのいずれかを作成し、何らかの形でオブジェクトのタイプを配列に読み込む方法はありますか?