0

我正在尝试编写一些编辑二进制 plist 文件的脚本。plist 描述了 DVD studio pro 文件中包含的对象。DVD studio pro 中的一个文本框似乎在 plist 中编码为描述文本字符串及其格式的 base64 数据。我似乎无法弄清楚如何理解这些数据。理想情况下,我希望能够更改文本字符串但不能更改格式。以下似乎描述了一个显示“此处的菜单标题”的文本框。有两个字符串,一个带有键名为“dictionary”,另一个称为“string”;两者都是CFData。有什么想法可以解析或将其转换为可以直接编辑的格式吗?我一直在玩用可可写一个小转换器,但还没有运气。

<dict>
                                            <key>Dictionary</key>
                                            <data>
                            BAtzdHJlYW10
                            eXBlZIHoA4QB
                            QISEhAxOU0Rp
                            Y3Rpb25hcnkA
                            hIQITlNPYmpl
                            Y3QAhYQBaQaS
                            hISECE5TU3Ry
                            aW5nAZSEASsG
                            TlNGb250hpKE
                            hIQGTlNGb250
                            HpSVJIQFWzM2
                            Y10GAAAAGgAA
                            AP/+TAB1AGMA
                            aQBkAGEARwBy
                            AGEAbgBkAGUA
                            AACEAWYVhAFj
                            AJsBmwCbAIaS
                            hJaXB05TQ29s
                            b3KGkoSEhAdO
                            U0NvbG9yAJSb
                            AYQEZmZmZoPz
                            8nI/g/Dvbz+D
                            7OtrPwGGkoSW
                            lwtOU0V4cGFu
                            c2lvboaShISE
                            CE5TTnVtYmVy
                            AISEB05TVmFs
                            dWUAlIQBKoSa
                            moNHx9c9hpKE
                            lpcNTlNPYmxp
                            cXVlbmVzc4aS
                            hJ6ghIQBZKEA
                            hpKElpcQTlNQ
                            YXJhZ3JhcGhT
                            dHlsZYaShISE
                            EE5TUGFyYWdy
                            YXBoU3R5bGUA
                            lIQEQ0NAUwAA
                            hQCGkoSWlxFO
                            U0JhY2tncm91
                            bmRDb2xvcoaS
                            hJubA4QCZmYA
                            AIaG
                                            </data>
                                            <key>String</key>
                                            <data>
                            BAtzdHJlYW10
                            eXBlZIHoA4QB
                            QISEhBJOU0F0
                            dHJpYnV0ZWRT
                            dHJpbmcAhIQI
                            TlNPYmplY3QA
                            hZKEhIQITlNT
                            dHJpbmcBlIQB
                            Kw9OZW51IFRp
                            dGxlIEhlcmWG
                            hAJpSQEPkoSE
                            hAxOU0RpY3Rp
                            b25hcnkAlIQB
                            aQWShJaWDU5T
                            T2JsaXF1ZW5l
                            c3OGkoSEhAhO
                            U051bWJlcgCE
                            hAdOU1ZhbHVl
                            AJSEASqEhAFk
                            nQCGkoSWlgtO
                            U0V4cGFuc2lv
                            boaShJuchIQB
                            Zp6DR8fXPYaS
                            hJaWEE5TUGFy
                            YWdyYXBoU3R5
                            bGWGkoSEhBBO
                            U1BhcmFncmFw
                            aFN0eWxlAJSE
                            BENDQFMAAIUA
                            hpKElpYGTlNG
                            b250hpKEhIQG
                            TlNGb250HpSZ
                            JIQFWzM2Y10G
                            AAAAGgAAAP/+
                            TAB1AGMAaQBk
                            AGEARwByAGEA
                            bgBkAGUAAACe
                            FYQBYwCjAaMA
                            owCGkoSWlgdO
                            U0NvbG9yhpKE
                            hIQHTlNDb2xv
                            cgCUowGEBGZm
                            ZmaD8/JyP4Pw
                            728/g+zraz8B
                            hoaG
                                            </data>
                                        </dict>
4

1 回答 1

2

那是一个 base64 编码的 NSArchiver 存档。您需要先解码 base64,然后使用[NSUnarchiver unarchiveObjectWithData:]. 上面的“字典”条目在解码后看起来像这样(在 Python 语法中,因为我使用了 pyObjC):

{
    NSBackgroundColor = "NSCalibratedWhiteColorSpace 0 0";
    NSColor = "NSCalibratedRGBColorSpace 0.94902 0.937255 0.921569 1";
    NSExpansion = "0.1053606";
    NSFont = "\"LucidaGrande 21.00 pt. P [] (0x103110b60) fobj=0x103110c30, spc=6.64\"";
    NSObliqueness = 0;
    NSParagraphStyle = "Alignment 0, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n    28L,\n    56L,\n    84L,\n    112L,\n    140L,\n    168L,\n    196L,\n    224L,\n    252L,\n    280L,\n    308L,\n    336L\n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0.05, HeaderLevel 0";
}
于 2011-02-17T11:20:31.857 回答