NSString / NSData / char* 类型之间的转换

来源:互联网 发布:双色球大数据分析软件 编辑:程序博客网 时间:2024/05/16 07:11

1. NSString转化为UNICODE String:
(NSString*)fname =@“Test”;
char fnameStr[10];
memcpy(fnameStr, [fname cStringUsingEncoding:NSUnicodeStringEncoding],2*([fname length]));


与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节

 

2. NSString 转化为 char *
NSString * str=@“Test”;
const char * a =[str UTF8String];


3.char * 转化为 NSString


NSString *str=[NSStringstringWithCString encoding:NSUTF8StringEncoding];

 

4. char * 转化 NSData
 方法一:
   char * a =(char*)malloc(sizeof(byte)*16);
   NSData *data = [NSData dataWithBytes:a   length:strlen(a)];
 方法二:
    转换为NSString: -(id)initWithUTF8String:(const char *)bytes
    然后用NSString的 - (NSData*)dataUsingEncoding:(NSStringEncoding)encoding

5. NSData 转化 char *
  NSData data ;
  char* a=[data bytes];

6. NSData 转化 NSString;


NSData* data;


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

 

7. NSString 转化 NSData对象

NSData* xmlData =[@"testdata" dataUsingEncoding:NSUTF8StringEncoding];

http://blog.sina.com.cn/s/articlelist_1256141290_14_1.html

NSString 转化 NSURL 

 //NSURL *url = [NSURLURLWithString:[str  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ]];


NSString *urlString=[@"http://www.google.com/search?client=safari&rls=en&q=搜索&ie=UTF-8&oe=UTF-8"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


NSURL 转化 NSString


NSURL *url=[NSURLURLWithString:urlString];


NSString *s=[[url absoluteString]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 

 


NSArray *arr = [urlStrcomponentsSeparatedByString:@"&"];

NSURL *url = [NSURLURLWithString:[[arr objectAtIndex:0]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ]];

NSMutableURLRequest*request = [NSMutableURLRequest requestWithURL:url];

[requestsetHTTPMethod:@"POST"];

 

NSMutableArray *_array= [[NSMutableArray alloc] initWithCapacity:0];

for (int i = 1; i <[arr count]; ++i ){

NSString *str = [arrobjectAtIndex:i];

[_arrayaddObject:str];

}

[_arraycomponentsJoinedByString:@"&"];

NSData *data =[[_array componentsJoinedByString:@"&"] dataUsingEncoding:NSASCIIStringEncoding];

[requestsetHTTPBody:data];


 // 发送请求并获得服务器反馈的数据

NSData *urldata =[AESEnCDeCViewController Get:url];

 

// 第一种转换NSData数据到char*字符串

char * test =(char*)[urldata bytes];

std::string old =deaes(test);

 

// 第二种转换NSData到UTF8编码的NSString中再转换为char*字符串

//    NSString *desStr = [[NSString alloc]initWithData:urldata encoding:NSUTF8StringEncoding];

//    const char *desresult = [desStrUTF8String];

//    std::string old = deaes(desresult);

 

// 解密字字符串到明文

NSString *oldstr =[[NSString alloc] initWithCString:old.c_str()];


很多时候软件读取的中文网页编码集是gb2312,所以显示出来的是乱码。这时需要将NSString文字编码转换


1 NSURL *url = [NSURLURLWithString:urlStr];

2 NSData *data = [NSDatadataWithContentsOfURL:url];   

3 NSStringEncoding enc =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);   

4 NSString *retStr = [[NSString alloc]initWithData:data encoding:enc];

0 0
原创粉丝点击