我试图了解专有文件格式(Filemaker Pro中的fp7
-文件格式)的字符串编码。
XOR
与0b01011010
混淆了每个字符,并且字符串长度使用单个起始字节进行编码(Filemaker中的最大字符串长度为100个字符)。control characters
,这些字符会修改下一个或几个后续字符的解码。这些控制字符使用ASCII控制字符空间(特别是0x01
至0x1f
)。这是我被困住的原因,因为我似乎找不到这些控制字符如何工作的模式。一些我认为发现的例子:
0x11
时,以下字符是通过在字节值上添加0x40
来创建的,例如字符Ā
(Unicode \U0100
)编码为0x11 0xC0
(0xC0
+ 0x40
= 0x100
)。0x10
时,先前的控制字符似乎已重置。0x03
时,通过在字节值上添加0x100
来创建下一个(仅下一个!)字符。如果控制字符0x03
之前是0x1b
,则通过添加0x100
来创建所有后续字符。示例字符串(0_ĀĐĠİŀŐŠŰƀƐƠưǀǐǠǰȀ
),其unicode代码点以及Filemaker中的编码:
char 0 _ Ā Đ Ġ İ ŀ Ő Š Ű ƀ Ɛ Ơ ư ǀ ǐ Ǡ ǰ Ȁ
unicode 30 5f 100 110 120 130 140 150 160 170 180 190 1a0 1b0 1c0 1d0 1e0 1f0 200
encoded 30 5f 11 c0 d0 e0 f0 3 40 3 50 3 60 3 70 1b 3 80 90 a0 b0 c0 d0 e0 f0 1c 4 80
如您所见,字符0
和_
用其直接unicode / ASCII值编码。字符ĀĐĠİ
使用0x11
控制字节进行编码。然后为每个字符使用ŀŐŠŰ
对0x03
进行编码,然后使用0x1B 0x03
对接下来的8个字符进行编码,等等。
这个编码方案对任何人都熟悉吗?
规则对于不超过0x200的字符来说很简单,但随后变得越来越混乱,甚至到看起来位置相关的地步。
我可以为周末的困惑和欢乐提供更多示例。