zoukankan      html  css  js  c++  java
  • 用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
    

  • 相关阅读:
    jquery queryBuilder过滤插件的使用
    前端跨域问题
    [BZOJ 3326] 数数
    [BZOJ 2427] 软件安装
    [BZOJ 3675] 序列分割
    [Atcoder Grand Contest 004] Tutorial
    [P2831] 愤怒的小鸟
    [Atcoder Regular Contest 065] Tutorial
    [P3806] Divide and Conquer on Tree
    [POJ 1741] Tree
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/2041063.html
Copyright © 2011-2022 走看看