适用于iOS和Mac OS X的MacBinary转换器

时间:2012-12-06 17:50:59

标签: objective-c ios macos cocoa-touch cocoa

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

1 个答案:

答案 0 :(得分:3)

你处于一个不值得羡慕的位置,不得不复活旧的代码以处理编码,而这些代码在这些日子里根本没用过。通过仅需要解码,您的任务变得更加容易。

MacBinaryIII.c/.h中,执行以下操作:

摆脱EncodeMacBinaryFile()EncodeMacBinaryFiles()EncodeMacBinary()FSpIsMacBinary()

也摆脱SetDesktopComment(),并在DecodeMacBinaryFiles()DecodeMacBinary()中移除其使用;如果你想要的只是转换后的文件,这是多余的。

虽然您已经大大简化了一些事情,但您需要转换代码以使其适用于文件路径,而不是那些在Pascal字符串中保存文件名的FSSpec结构,最大限制为31个字符。为此:

使用.m扩展名重命名文件而不是.c来处理Cocoa内容。

要确定文件是否存在,您可以使用-[NSFileManager fileExistsAtPath:]

要读取文件,可以使用NSFileHandle quick和dirty来获取要转换的文件内容。你会得到一个NSData,并且需要制作一个可变的副本来转换它的内容。要写出转换后的数据,您可以利用NSMutableData写出文件的能力。

最后,在执行字节操作时要注意字节序问题。这段代码是在68000(和后代)硬件和PowerPC:big-endian的时代写的。

我希望我有一些东西,我可以放在你的腿上,准备好去,但鉴于这个特殊的任务,这就是我所能提供的。

祝你好运!