我正在尝试编写一些脚本来编辑二进制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>发布于 2011-02-17 19:20:32
这是一个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";
}https://stackoverflow.com/questions/4951686
复制相似问题