4

iOS および Mac OS X で MacBinaryIII エンコード ファイルを変換するコードを探しています。私が見つけたのは Christopher Evans MacBinaryIIIと Sean Hummels MacBinaryIII OSAX 1.0.1の 2 つだけで、どちらも iOS または 64 ビットでは使用できない API を使用しています。 Mac OS X Obj-C ランタイム。

4

1 に答える 1

3

あなたはうらやましい立場にあり、最近ではあまり使用されていないエンコーディングを処理するために古いコードを復活させなければなりません。デコードのみが必要なため、作業が多少簡単になります。

MacBinaryIII.c/.hで、次の手順を実行します。

EncodeMacBinaryFile()、、、およびEncodeMacBinaryFiles()を取り除きます。EncodeMacBinary()FSpIsMacBinary()

SetDesktopComment()too を取り除き、 and での使用を削除しDecodeMacBinaryFiles()ますDecodeMacBinary()。変換されたファイルだけが必要な場合、これは不要です。

FSSpec大幅に単純化しましたが、最大 31 文字のパスカル文字列でファイル名を保持する構造ではなく、ファイル パスで機能するようにコードを変換する必要があります。そのために:

ファイルの名前を .c ではなく .m 拡張子に変更して、Cocoa のものを処理します。

ファイルが存在するかどうかを判断するには、-[NSFileManager fileExistsAtPath:].

ファイルを読み取るには、NSFileHandlequick と dirty を使用して、変換するファイルの内容を取得できます。NSData を取得し、その内容を変換するために変更可能なコピーを作成する必要があります。変換されたデータを書き出すために、ファイルに書き出す NSMutableData の機能を利用できます。

最後に、バイト操作の実行中はエンディアンの問題に注意してください。このコードは、68000 (およびその子孫) ハードウェアと PowerPC: ビッグエンディアンの時代に書かれました。

膝の上に置いてすぐに使えるものがあればいいのですが、この特定のタスクを考えると、これが私が提供できるすべてです。

幸運を!

于 2012-12-06T19:19:42.627 に答える