关于二进制格式的plist,搜到一篇博客《详解Binary Plist格式》,介绍的很详细,但是结合github上关于一份解析bplist的代码通过结果实际来看,博客中解析对象表的说明出现了问题,同原文不同处贴在下面
类型 | HEX | 说明 |
---|
单字节 | 0X | X=0:空值 X=8:布尔假 X=9:布尔真 |
整数 | 1X | 后面跟的2^X个字节就是这个数字的值 |
浮点数 | 2X | 后面跟的2^X个字节就是这个数字的值 |
日期 | 33 | 后面接着8个字节的浮点数时间戳 |
二进制 | 4X | X表示这段数据的字节数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数 |
字符串 | 5X | ASCII编码 X表示这段数据的字节数,如果X=F则后面作为整数对象继续解析所得数既为字节数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数 |
字符串 | 6X | Unicode编码 X表示这段数据的字节数,如果X=F则后面作为整数对象继续解析所得数既为字节数 ,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数,记得双字节! |
UID | 8X | X+1表示这段数据的字节数 现在被当做字符串来处理 |
数组 | AX | X表示其元素个数,如果X=F则后面作为整数对象继续解析所得数既为个数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这个数组的元素个数, 后面接着X或Z个元素在偏移表的位置 |
集合 | CX | X表示其元素个数,如果X=F则后面作为整数对象继续解析所得数既为个数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段集合的元素个数, 后面接着X或Z个元素在偏移表的位置 |
字典 | DX | X表示其元素个数,如果X=F则后面作为整数对象继续解析所得数既为个数 ,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数, 后面接着X或Z个key在偏移表的位置,X个value在偏移表的位置 |
另我个人写了一份解析bplist的python代码,上传在了github
新开公众号“码家村”,欢迎关注
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)