我正在寻找在 iOS 和 Mac OS X 上转换 MacBinaryIII 编码文件的代码。我能找到的仅有两个是 Christopher Evans MacBinaryIII和 Sean Hummels MacBinaryIII OSAX 1.0.1,它们都使用 iOS 或 64 位上不可用的 API Mac OS X Obj-C 运行时。
1 回答
您处于一个令人羡慕的境地,不得不重新使用旧代码来处理这种编码,如果在这些日子里根本没有使用那么多的话。只需解码,您的任务就变得更容易了。
在MacBinaryIII.c/.h
中,执行以下操作:
摆脱EncodeMacBinaryFile()
, EncodeMacBinaryFiles()
,EncodeMacBinary()
和FSpIsMacBinary()
.
摆脱SetDesktopComment()
too,并删除它在DecodeMacBinaryFiles()
and中的使用DecodeMacBinary()
;如果你想要的只是转换后的文件,这是多余的。
虽然您已经大大简化了事情,但您需要转换代码,以便它与文件路径一起使用,而不是那些FSSpec
在 Pascal 字符串中保存文件名的结构,最大限制为 31 个字符。为此:
使用 .m 扩展名而不是 .c 重命名文件以处理 Cocoa 内容。
要确定文件是否存在,您可以使用-[NSFileManager fileExistsAtPath:]
.
对于读取文件,您可以使用NSFileHandle
quick 和dirty 来获取文件内容进行转换。您将得到一个 NSData 回来,并且需要制作它的可变副本以转换其内容。为了写出转换后的数据,您可以利用 NSMutableData 写出文件的能力。
最后,在执行字节操作时要注意字节序问题。这段代码是在 68000(及其后代)硬件和 PowerPC:big-endian 的时代编写的。
我希望我有一些东西可以放在你的腿上,准备好出发了,但是鉴于这项特殊的任务,这就是我所能提供的。
祝你好运!