char 字符


1.

      char cStrArr[4] = {'1','2','3','4'};

        NSString *StrArr = [[NSString alloc]initWithCString:cStrArr encoding:NSASCIIStringEncoding];

         NSLog(@"StrArr = %@",StrArr);//StrArr = 1234

        NSLog(@"sizeof(cStrArr)=%ld",sizeof(cStrArr));//sizeof(cStrArr)=4

        NSLog(@"StrArr length = %ld",[StrArr length]);//StrArr length = 4


 2.   


        char a = '1';

        NSLog(@"a = %c",a);//a = 1

        NSLog(@"sizeof(a)= %ld",sizeof(a));//sizeof(a)= 1

总结(3):OC中有Char类型。跟c一样。



3.        

    //NSString->char

         NSString * str1 = @"123";

        char *cStr1 = [str1 cStringUsingEncoding:NSASCIIStringEncoding];

        NSLog(@"cStr1 = %s",cStr1);//cStr1 = 123

        NSLog(@"sizeof(cStr1)=%ld",sizeof(cStr1));//sizeof(cStr1)=8

        NSLog(@"sizeof(str1)= %ld",sizeof(str1));//sizeof(str1)= 8

        NSLog(@"str1 length = %ld",[str1 length]);//str1 length = 3

        NSLog(@"strlen(cStr1)=%ld",strlen(cStr1));//strlen(cStr1)=3

        for (int i = 0; i<<span style="color: #3d1d81">strlen(cStr1); i++) {

            NSLog(@"%c",cStr1[i]);//1, 2,3

        }


5

    // NSString->NSData


  NSString * str = @"123";

        

        NSLog(@"str length = %ld",[str length]);//str length = 3,注意[str length]=3.strlen(str)=6,因为str是一个对象,里面包含NSInteger 和首地址。

        NSLog(@"sizeof(str)=%ld",sizeof(str));//sizeof(str)=8


      NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding];

        NSLog(@"ASCII:123 = %@",data);//ASCII:123 = <313233>

NSLog(@"data byte=%s",[data bytes]);//data byte=123 注意此处       


        NSData *data1 = [str dataUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"UTF8:123 = %@",data1);//UTF8:123 = <313233>

总结(5):[data bytes]使用%s输出字符串。


6        

        // NSData ->NSString

        NSString *switchStr = [[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];

        NSLog(@"switchStr = %@",switchStr);//switchStr = 123



7  

      //NSData->Byte

        Byte *testByte = (Byte*)[data1 bytes];//得到data1bytes的指针。

        // 得到以testByte为首地址,长度为[data1 length]的数据。

        for(int i = 0;i<[data1 length];i++)

            NSLog(@"testByte = %d\n",testByte[i]);//49,50,51


(8)        

        

          //Byte->NSData   

        NSData *bData = [[NSData alloc]initWithBytes:testByte length:strlen(str)];//注意这种写法错误,strNSString类型无strlen方法。

        NSLog(@"bData length = %ld",(unsigned long)[bData length]);//bData length = 6

        

        NSData *bData1 = [[NSData alloc]initWithBytes:testByte length:[str length]];//这样写是正确的

        NSLog(@"bData length = %ld",(unsigned long)[bData1 length]);//bData length = 3

9     

         //Byte->NSString

        NSString *switchStr1 = [[NSString alloc]initWithBytes:testByte length:[data1 length]encoding:NSUTF8StringEncoding];

        NSLog(@"switchStr1 = %@",switchStr1);//switchStr1 = 123


        NSString *accountDomain = @"baidu.com";

        // NSString->const char * :const char * xx = [NSString utf8String];




  (10)      const char *,char *是可以转成NSString*的,只是得加上长度。

        struct hostent *hostent = gethostbyname([accountDomain UTF8String]);

        struct in_addr *addr = (struct in_addr*)hostent->h_addr_list[0];

        //得到IP字符串

        struct sockaddr_in sockAdd;

        sockAdd.sin_addr = *addr;

        printf("%s\n",inet_ntoa(sockAdd.sin_addr));//220.181.111.86

        const char * xx = inet_ntoa(sockAdd.sin_addr);

        

        NSString *ch = [[NSString alloc]initWithBytes:xx length:strlen(xx)encoding:NSUTF8StringEncoding];

        NSLog(@"%@",ch);//220.181.111.86





  NSString *withChinese = @"this 这个";

        // NSString->NSdata

        NSData *withChineseData = [withChinese dataUsingEncoding:NSASCIIStringEncoding];

        NSLog(@"withchineseData:%@",withChineseData);//withchineseData:(null)

        NSData *withChineseDataUsingUTF8 = [withChinese dataUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"withChineseDataUsingUTF8:%@",withChineseDataUsingUTF8);//withChineseDataUsingUTF8:<74686973 20e8bf99 e4b8aa>

        

        //NSData->NSString

        NSString *Chinese = [[NSString alloc]initWithData:withChineseDataencoding:NSASCIIStringEncoding];

        NSLog(@"NSString->NSData->NSString:%@",Chinese);

        

        NSString *ChineseUsingUTF8 = [[NSString alloc]initWithData:withChineseDataUsingUTF8encoding:NSUTF8StringEncoding];

        NSLog(@"NSString->NSData->NSString UTF8:%@",ChineseUsingUTF8);//NSString->NSData->NSString UTF8:this 这个

        

        结论:带汉字使用ASCII码编码不成功。需要使用UTF8编码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值