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

标签 objective-c ios macos cocoa-touch cocoa

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

最佳答案

您处于一个不值得羡慕的位置,不得不重新使用旧代码来处理一种编码,好吧,这些日子即使根本没有使用过那么多。只需解码,您的任务就会变得更简单。

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

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

也删除 SetDesktopComment(),并删除它在 DecodeMacBinaryFiles()DecodeMacBinary() 中的使用;如果您只需要转换后的文件,那么这是多余的。

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

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

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

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

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

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

祝你好运!

关于objective-c - 适用于 iOS 和 Mac OS X 的 MacBinary 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13749502/

相关文章:

IOS/objective-C : Display live camera preview on load without image picker controller

ios - 无法更改项目中的包 ID,灰显

swift - 从其他 View Controller 打开窗口+ View

objective-c - 无需解锁对话框即可读取权限

iPhone:在 UIScrollView 或 UITableView 上覆盖图像

ios - 如何将 PFQueryViewController 用作 UITableViewController 的 subview ?

ios - 更改没有淡入淡出效果的 UIButton 标题?

android - 在移动设备上进行 Selenium 测试是否值得?

ios - 如何以编程方式在 SceneKit 中围绕立方体包装 png 纹理

java - Tomcat 启动忽略用于调试的 jpda 选项