iPhone写二进制数据

时间:2009-10-06 15:38:58

标签: iphone binary

如何将二进制数据写入文件?我想将浮点数写入文件,raw,然后将它们作为浮点数读回。你是怎么做到的?

2 个答案:

答案 0 :(得分:6)

正在试验这个:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *file = [documentsDirectory stringByAppendingPathComponent:@"binaryData"];

float b = 32.0f;

NSMutableData *data = [NSMutableData dataWithLength:sizeof(float)];
[data appendBytes:&b length:sizeof(float)];
[data writeToFile:file atomically:YES];

NSData *read = [NSData dataWithContentsOfFile:file];
float b2;
NSRange test = {0,4};
[read getBytes:&b2 range:test];

奇怪的是,写入的文件似乎是8个字节而不是4.甚至可以用0长度初始化nsdata,附加一个浮点然后写入,然后该文件将是4个字节。为什么NSData默认添加4个字节?长度为4的NSData应该生成长度为4而不是8的文件。

答案 1 :(得分:3)

请注意,Objective-C只是C编程语言的扩展。

我通常创建一个NSFileHandle,然后以这种方式写二进制数据:

NSFileHandle handle*;
float f;

write([handle fileDescriptor], &f, sizeof(float));