使用Objective-C读取SWF标题

时间:2009-09-05 20:00:13

标签: objective-c cocoa

我正在尝试使用NSData读取SWF文件的标头。 根据SWF格式规范,我需要访问电影的宽度和高度读取位,而不是字节,我在Obj-C中找不到办法

  
    

字节9到?:这里存储了一个RECT(电影的边界)。必须以二进制形式阅读。首先,我们将第一个字节转换为二进制:“01100000”         前5位将告诉我们每个存储值的位大小:“01100”= 12         因此,我们有4个12位= 48位的字段         48位+5位(RECT的标题)= 53位         填充以零完成字节,直到我们达到8. 53位+ 3个对齐位= 56位的倍数(此RECT长度为7个字节,7 * 8 = 56)         我用这个公式来确定所有这些东西:

  

我从哪里开始?

2 个答案:

答案 0 :(得分:2)

ObjC是C的超集:您可以在没有问题的情况下与ObjC一起运行C代码。

因此,您可以使用基于C的库(如libming)从SWF文件中读取字节。

如果您需要将字节移植到NSData对象中,请查看-dataWithBytes:length:方法。

答案 1 :(得分:1)

首先查找具有已执行所需功能的兼容许可证的代码。可以从Obj-C代码中使用C库,只需将它们链接起来(或安排它们动态链接),然后调用它们的函数。

如果不这样做,请先查看Binary Data Programming Guide for CocoaNSData Class Reference。您需要提取包含您感兴趣的位的字节,然后使用位屏蔽技术来提取您关心的位。如果它们仍然存在于Snow Leopard中,您可能会发现BitTst()BitSet()BitClr()函数及其朋友很有用;我不确定他们是否最终进入了Carbon的淡化部分。还有定义的Posix setbit()clrbit()isset()isclr()宏。然后,最后,有C位运算符:^|&~<<>>