用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


原文: http://www.cnblogs.com/pengyingh/articles/2360358.html

猜你喜欢

转载自lizaochengwen.iteye.com/blog/1972411