适用于 iOS 和 Mac OS X 的 MacBinary 转换器
Posted
技术标签:
【中文标题】适用于 iOS 和 Mac OS X 的 MacBinary 转换器【英文标题】:MacBinary converter for iOS and Mac OS X 【发布时间】: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 类,但我怀疑它是不是更现代的代码。 【参考方案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 的时代编写的。
我希望我有一些东西可以放在你的腿上,准备出发,但鉴于这项特殊的任务,这就是我所能提供的。
祝你好运!
【讨论】:
不令人羡慕的职位,我认为这是我的职位;)谢谢。以上是关于适用于 iOS 和 Mac OS X 的 MacBinary 转换器的主要内容,如果未能解决你的问题,请参考以下文章
适用于 MS SQL Server 的 Mac OS X 的 SQL 客户端 [关闭]