NSData使用與分析

gcd8 9年前發布 | 6K 次閱讀 Objective-C IOS 算法
//

//  main.m

//  TestNSData&NSDate

//

//  Created by ibokan on 14-8-10.

//  Copyright (c) 2014年 楊斌. All rights reserved.

//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])

{

    @autoreleasepool {



        char *str="A C string!";

        char *str2="B C string!";

        char *str3="C C string";

        NSData *data1=[NSData dataWithBytes:str length:strlen(str)+1];//創建不可變的字節對象

        NSLog(@"不可變的data1的字節是:%@",data1);//輸出十六進制的ASCII編碼,當然要加上最后的字符串的結尾符號,所以長度要加一



        NSLog(@"不可變的data1的長度是:%d,輸出指針:%s",[data1 length],[data1 bytes]);//length是字節的長度,bytes是返回一個指針

        NSData *data2=[NSData dataWithBytes:str2 length:strlen(str2)+1];//用于追加到可變G的mdata的中間對象



        NSMutableData *mdata=[NSMutableData dataWithBytes:str3 length:strlen(str3)+1];



        [mdata appendData:data2];//追加data對象



        [mdata appendBytes:str length:strlen(str)+1];//2.追加字符串



        NSLog(@"可變的字節對象:%@",mdata);



    }

    return 0;

}



輸出結果:


2014-08-10 17:19:46.795 TestNSData&NSDate[1214:303] 不可變的data1的字節是:<41204320 73747269 6e672100>

2014-08-10 17:19:46.805 TestNSData&NSDate[1214:303] 不可變的data1的長度是:12,輸出指針:A C string!

2014-08-10 17:19:46.805 TestNSData&NSDate[1214:303] 可變的字節對象:<43204320 73747269 6e670042 20432073 7472696e 67210041 20432073 7472696e 672100>


Program ended with exit code: 0



結果的說明:輸出的data對象實際上是ASCII碼的組合,每兩個十六進制數字代表一個字母或者其他的ASCII字符的ASCII值,計算出

x41輸出的開頭可以看出A的ASCII碼是65對應的十六進制是41,空格則是x20,十進制的ASCII是32!


strlen(str)+1是因為字符串最后的結尾符并未被計算成字符所以得加上一,’\0’的ASCII是00;


NSMutableData是NSData的子類

 本文由用戶 gcd8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!