我正在做一个项目,我从文件中读取数据,我需要操作其中的一些数据。
数据是二进制的,其中包含一些 ASCII 编码文本。如果这很重要,数据也会保存在 Big Endian 中。
我想要完成的是在这些数据中找到一个模式并操作该模式的一部分。
示例:(09 49 6E 76 65 6E 74 6F 72 79 0A 00 00 00 02 01 00)
这表示 Inventory 中有多少个字母的数字 9,后跟不带引号的 ASCII“Inventory”。“0A”标记该 ASCII 文本的结尾,后跟 00 00 00 02 标记我们库存的大小“2”。“01 00” 标志着整个库存区域的结束。
示例 2:(04 53 6C 6F 74 00 02 00)
这表示 Slot 中有多少个字母的数字 4,后跟不带引号的 ASCII“Slot”。“00”是 ASCII 文本和插槽号“02”之间的空格,后跟区域“00”的结尾。
我需要在文件中找到这些模式和其他几个模式。然后我需要修改部分模式并写入磁盘。
ExampleModify: (04 53 6C 6F 74 00 02 00) "From above" to (04 53 6C 6F 74 00 07 00) 改变 "slot number '02' to '07'.
另一个需要注意的是,虽然我需要在文件中搜索不同大小、长度和包含的数据的多个模式,但这些模式的多个部分可能包含需要单独修改的不同数据作为一个整体。
澄清:(库存,插槽,id,计数) - 将被视为一个人的信息。
记录的每个人都可以有多个(Inventory、Slot、id、Count)副本。
我想向用户显示此信息,并为他们提供修改组中每个元素的选项。
我不是一个好的程序员,想学习,如果你有例子我很感激,如果你有建议,请给它。如果你能把它调低就更好了,谢谢。我现在有一个正在进行的工作,但我现在卡住了。如果你想看看我有什么,请告诉我。
我所拥有的总结:将文件读入 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”,表示该特定人员记录有 2 个 (Slot, id, Count) 实例。
(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
“Slot” - 包含库存槽编号
“计数” - 包含该插槽中有多少项目。编辑注意:如果我不清楚,请告诉我,再次感谢。