解析IOS二进制格式的bplist

关于二进制格式的plist,搜到一篇博客《详解Binary Plist格式》,介绍的很详细,但是结合github上关于一份解析bplist的代码通过结果实际来看,博客中解析对象表的说明出现了问题,同原文不同处贴在下面

 

 

类型HEX说明
单字节0XX=0:空值 X=8:布尔假 X=9:布尔真
整数1X后面跟的2^X个字节就是这个数字的值
浮点数2X后面跟的2^X个字节就是这个数字的值
日期33后面接着8个字节的浮点数时间戳
二进制4XX表示这段数据的字节数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数
字符串5XASCII编码 X表示这段数据的字节数,如果X=F则后面作为整数对象继续解析所得数既为字节数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数
字符串6XUnicode编码 X表示这段数据的字节数,如果X=F则后面作为整数对象继续解析所得数既为字节数 ,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数,记得双字节!
UID8XX+1表示这段数据的字节数 现在被当做字符串来处理
数组AXX表示其元素个数,如果X=F则后面作为整数对象继续解析所得数既为个数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这个数组的元素个数,  后面接着X或Z个元素在偏移表的位置
集合CXX表示其元素个数,如果X=F则后面作为整数对象继续解析所得数既为个数,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段集合的元素个数, 后面接着X或Z个元素在偏移表的位置
字典DXX表示其元素个数,如果X=F则后面作为整数对象继续解析所得数既为个数 ,如果X=F,则后面取一个字节的后四位记为Y,随后的2^Y个字节解析为整数Z,即为这段数据的字节数, 后面接着X或Z个key在偏移表的位置,X个value在偏移表的位置

 

 

 

另我个人写了一份解析bplist的python代码,上传在了github

 

新开公众号“码家村”,欢迎关注

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值