在Cocoa Touch中解析二进制文件的最简单方法是什么?

时间:2008-12-31 08:45:17

标签: cocoa-touch parsing

假设我有一个包含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];

我的第一个问题是询问这是否是在iPhone上做事的常用方式,因为我没有找到任何接近Java的DataInputStream的东西。

我的第二个问题与memcpy的代码行有关。我不明白为什么以下部分(更优雅,更少“低级”)不起作用:

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

我在构建时收到警告:

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

执行时,我得到了:

'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance

1 个答案:

答案 0 :(得分:2)

对于最后一个问题,请使用getBytes(大写B)。