Cocoa Touchでバイナリファイルを解析する最も簡単な方法は何ですか?

StackOverflow https://stackoverflow.com/questions/402555

  •  03-07-2019
  •  | 
  •  

質問

32ビットのint値を含むバイナリファイル(Javaで生成)があるとします。現在、次のObjective-Cコードを使用して解析しています:

NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"dat"];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];

unsigned long intValue;
memcpy(&intValue, [[file readDataOfLength:4] bytes], 4);
intValue = NSSwapBigLongToHost(intValue);

[file closeFile];

最初の質問は、JavaのDataInputStreamに近いものが見つからなかったため、それがiPhoneでの一般的な方法かどうかを尋ねることです。

2番目の質問は、memcpyを使用したコード行に関連しています。なぜ次の部分(よりエレガントで、「低レベル」ではない)が機能していないのか理解できません:

[[file readDataOfLength:4] getbytes:&intValue];

ビルド時に警告が表示されます:

'NSData' may not respond to '-getbytes:'

実行すると、次のようになります:

'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance
役に立ちましたか?

解決

最後の質問には、getBytes(大文字のB)を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top