用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM