【问题标题】:MacBinary converter for iOS and Mac OS X适用于 iOS 和 Mac OS X 的 MacBinary 转换器
【发布时间】:2012-12-06 17:50:58
【问题描述】:

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

【问题讨论】:

  • Open Powerplant 中有一个 MacBinary 类,但我怀疑它是不是更现代的代码。

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


【解决方案1】:

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

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

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

也去掉SetDesktopComment(),并删除它在DecodeMacBinaryFiles()DecodeMacBinary()中的使用;如果你想要的只是转换后的文件,那是多余的。

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

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

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

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

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

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

祝你好运!

【讨论】:

  • 不令人羡慕的职位,我认为这是我的职位;)谢谢。
猜你喜欢
  • 2014-11-06
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多