我在iOS和Mac OS X上寻找转换MacBinaryIII编码文件的代码。我能找到的唯一两个是Christopher Evans MacBinaryIII和Sean Hummels MacBinaryIII OSAX 1.0.1,它们都使用不可用的API在iOS或64位Mac OS X Obj-C运行时。
答案 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的时代写的。
我希望我有一些东西,我可以放在你的腿上,准备好去,但鉴于这个特殊的任务,这就是我所能提供的。
祝你好运!