用NSData玩转二进制文件的读写
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSString *path = @"/Users/billchen/Desktop/f1.rtf"; NSString *temp = @"Hello Friend"; int i = 100; float f = 98.3333f; NSMutableData *writer = [[NSMutableData alloc] init]; [writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]]; [writer appendBytes:&i length:sizeof(i)];//&表示取址 [writer appendBytes:&f length:sizeof(f)]; [writer writeToFile:path atomically:YES]; [writer release]; int ii; float ff; NSString *ttemp; NSData *reader = [NSData dataWithContentsOfFile:path]; ttemp = [[NSString alloc]initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])] encoding:NSUTF8StringEncoding]; [reader getBytes:&ii range:NSMakeRange([temp length], sizeof(ii))]; [reader getBytes:&ff range:NSMakeRange([temp length] + sizeof(ii), sizeof(ff))]; NSLog(@"string:%@ int:%i float:%f", ttemp, ii, ff); [temp release]; [ttemp release]; [path release]; [pool drain]; return 0; }
- &用于取址,获取指针
- NSMakeRange 用于生成NSRange
返回结果:
[Switching to process 13606 thread 0x0] 2011-05-09 13:24:04.962 demo09[13606:903] string:Hello Friend int:100 float:98.333298