iOS 和 Mac OS X 的 MacBinary 转换器

4

我正在寻找在iOS和Mac OS X上转换MacBinaryIII编码文件的代码。我能找到的只有Christopher Evans的MacBinaryIII和Sean Hummels的MacBinaryIII OSAX 1.0.1,它们都使用了iOS或64位Mac OS X Obj-C运行时不可用的API。


Open Powerplant中有一个MacBinary类,但我怀疑它的代码是否更现代化。 - JWWalker
1个回答

3
您处于一个不太令人羡慕的位置,需要重写那么老的代码来处理一种在这些日子里很少使用甚至根本不用的编码方式。您的任务会变得更加容易,因为您只需要进行解码。
MacBinaryIII.c/.h 中执行以下操作:
删除 EncodeMacBinaryFile()EncodeMacBinaryFiles()EncodeMacBinary()FSpIsMacBinary()
同时也要删除 SetDesktopComment(),并在 DecodeMacBinaryFiles()DecodeMacBinary() 中删除其使用;如果你只想要转换后的文件,这是多余的。
虽然您已���大大简化了事情,但您需要将代码转换为可以处理文件路径而不是那些以带有最大长度为31个字符的 Pascal 字符串保存文件名的 FSSpec 结构。为此:
将文件重命名为 .m 扩展名,而不是 .c 扩展名以处理 Cocoa 相关的东西。
要确定文件是否存在,可以使用 -[NSFileManager fileExistsAtPath:]
要读取文件,可以使用 NSFileHandle 快速且简单地获取文件内容进行转换。您将获得一个 NSData,需要对其做可变副本以转换其内容。要写出转换后的数据,可以利用 NSMutableData 的写入文件的功能。
最后,注意在进行字节操作时的大小端问题。这段代码是在 68000(和后代)硬件和 PowerPC:大端编写的。
我希望我能提供一些您可以直接使用的东西,但考虑到这个特定任务,这就是我所能提供的了。
祝你好运!

尴尬的职位,我想那就是我的工作标题了 ;) 谢谢。 - catlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接