4

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

4

1 回答 1

3

您处于一个令人羡慕的境地,不得不重新使用旧代码来处理这种编码,如果在这些日子里根本没有使用那么多的话。只需解码,您的任务就变得更容易了。

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

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

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

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

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

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

对于读取文件,您可以使用NSFileHandlequick 和dirty 来获取文件内容进行转换。您将得到一个 NSData 回来,并且需要制作它的可变副本以转换其内容。为了写出转换后的数据,您可以利用 NSMutableData 写出文件的能力。

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

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

祝你好运!

于 2012-12-06T19:19:42.627 回答