私はファイルからデータを読み取るプロジェクトに取り組んでおり、このデータの一部を操作する必要があります。
データはバイナリであり、ASCIIでエンコードされたテキストが含まれています。重要な場合は、データもビッグエンディアンに保存されます。
私が達成したいのは、このデータからパターンを見つけて、そのパターンの一部を操作することです。
例:(09 49 6E 76 65 6E 74 6F 72 79 0A 00 00 00 02 01 00)
これは、Inventoryにある文字数の9を表し、その後に引用符なしのASCII「Inventory」が続きます。「0A」はそのASCIIテキストの終わりを示し、続いて00 000002が在庫のサイズを示します「2」。「0100」は、インベントリ領域全体の終わりを示します。
例2:(04 53 6C 6F 74 00 02 00)
これは、スロット内の文字数の4を表し、その後に引用符なしのASCII「スロット」が続きます。「00」はASCIIテキストとスロット番号「02」の間のスペースで、その後に領域「00」の終わりが続きます。
これらのパターンと他のいくつかのパターンをファイル内で見つける必要があります。次に、パターンの一部を変更してディスクに書き込む必要があります。
ExampleModify:(04 53 6C 6F 74 00 02 00)「上から」から(04 53 6C 6F 74 00 07 00)「スロット番号「02」を「07」に変更。
もう1つの注意点は、さまざまなサイズ、長さ、および含まれるデータのファイルで検索する必要があるいくつかのパターンがありますが、全体として個別に変更する必要がある異なるデータを含むこれらのパターンの複数のセクションが存在する可能性があることです。
明確にするために:(在庫、スロット、ID、カウント)-一人の情報として扱われます。
記録される人ごとに(在庫、スロット、ID、カウント)の複数のコピーが存在する可能性があります。
この情報をユーザーに表示し、グループ内の各要素を変更するオプションをユーザーに提供したいと思います。
私は優れたプログラマーではないので、学びたいと思っています。例があれば、感謝します。アドバイスがあれば教えてください。あなたがそれをばかにすることができれば、それはさらに良いです、ありがとう。現在、作業中ですが、行き詰まっています。私が持っているものを見たい場合は私に知らせてください。
私が持っているものの要約:ファイルをbyte []に読み込み、配列全体をコンソールに表示します。それについてです。少しのフォーマットと、配列に読み込んだチャンクを見つけるためのデバッグ情報が含まれています。
これがpastebinの私のコードへのリンクです。リンク
(Inventory、Slot、id、Count)のすべてのオカレンスを取得できるわけではないことを認識しています。これも修正する必要があります。
編集:例(09 49 6E 76 65 6E 74 6F 72 79 0A 00 00 00 02 01 00)これは私が読んでいるファイル内のバイナリデータの固定長チャンクです。前述のように、09は文字列の長さを表します。文字列の後に続くのは(0A 00 00 00 02 01 00)です。その重要な部分は(02)です。これは、バイナリデータのスライスで変更されるのはそれだけだからです。「02」は「2」を表し、その特定の人物のレコードに(Slot、id、Count)の2つのインスタンスがあることを意味します。
(File)
(09 Inventory 0A 00 00 00 02 01 00) // Start of person 1's record with 2 instances.
(Slot)
(id)
(Count)
(Slot)
(id)
(Count)
(Rotation) // End of person 1's record
(09 Inventory 0A 00 00 00 04 01 00) // Start of person 2's record with 4 instances.
(Slot)
(id)
(Count)
(Slot)
(id)
(Count)
(Slot)
(id)
(Count)
(Slot)
(id)
(Count)
(Rotation) // End of person 2's record
(File End)
アイデアは、「id」を編集するか、インベントリに追加してスロットの数を増やし、(Slot、id、Count)のインスタンスをさらに追加したいということです。
「id」-アイテムIDが含まれます
「スロット」-インベントリスロット番号が含まれます
「カウント」-そのスロットにあるアイテムの数が含まれます。編集注:はっきりしない場合はお知らせください。ありがとうございます。