• 用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
    

  • 相关阅读:
    JZOJ 5870 地图
    20190921
    20190919
    SP703 SERVICE
    UVA323 Jury Compromise
    [note]一类位运算求最值问题
    [BZOJ3674]可持久化并查集
    [luogu3359]改造异或树
    [luogu4755]Beautiful Pair
    [BJWC2012]冻结
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/2041063.html
Copyright © 2020-2023  润新知