我可以使用一些建议 - 我正在解析 php 中的二进制文件,具体来说,它是 Sega Genesis rom 文件。根据我制作的表格,某些字节对应于字符或使用游戏的文本引擎控制不同的东西。
有字节,用于字符以及“控制器”字节,用于换行符、条件、颜色和一堆其他东西,所以一个典型的句子可能看起来像这样:
FC 03 E7 05 D3 42 79 20 64 6F 69 6E 67 20 73 6F 2C BC BE 08 79 6F 75 20 6A 75 73 74 20 61 63 71 75 69 72 65 64 BC BE 04 61 7461 65 65 7 7 74 20 74 6F 20 79 6F 75 72 BC 73 74 61 74 75 73 20 61 73 20 61 20 77 61 72 72 69 6F 72 21 BD BC
我可以翻译成:
<FC><03><E7><05><D3>By doing so,<NL><BE><08>you just acquired<NL><BE><04>a testament to your<NL>status as a warrior!<CURSOR>
我想为这样的控制器字节字符串指定属性,例如长度并将我自己的值写入某些位置..
请参阅,转换为字符(00 到 7F)或换行符(BC)的字节仅由单个字节组成,而其他字节由 2(BE XX)组成。条件 (FC) 甚至包含 5 个字节:FC XX YY(其中 X 和 Y 指的是我在将翻译的字符串放在一起时需要计算的偏移量)
我希望我的解析器能够识别这些字节并让我动态地编写 XX YY。使用 strtr 我只能替换“组”,例如当我将静态字节串放入数组时。
在保持解析器灵活的同时,您将如何做到这一点?谢谢!