ios數據類型轉換
ios開發-數據類型轉換
1,NSData 與 NSString
NSData --> NSString
NSString*aString = [[NSString alloc] initWithData:adata encoding:NSUTF8StringEncoding];
NSString --> NSData
NSString*aString = @"1234";
NSData*aData = [aString dataUsingEncoding: NSUTF8StringEncoding];
2,NSData 與 Byte
NSData --> Byte
NSString*testString = @"1234567890";
NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];
Byte *testByte = (Byte *)[testData bytes];
Byte --> NSData
Byte byte[] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
NSData *adata = [[NSData alloc] initWithBytes:byte length:24];
Byte數組->16進制數
Byte *bytes = (Byte *)[aData bytes];
NSString *hexStr=@"";
for(int i=;i<[encryData length];i++)
{
NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16進制數
if([newHexStr length]==1)
hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
else
hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
NSLog(@"bytes 的16進制數為:%@",hexStr);
16進制數->Byte數組
///// 將16進制數據轉化成Byte 數組
NSString *hexString = @"3e435fab9c34891f"; //16進制字符串
int j=;
Byte bytes[128]; ///3ds key的Byte 數組, 128位
for(int i=;i<[hexString length];i++)
{
int int_ch; /// 兩位16進制數轉化后的10進制數
unichar hex_char1 = [hexString characterAtIndex:i]; ////兩位16進制數中的第一位(高位*16)
int int_ch1;
if(hex_char1 >= '0' && hex_char1 <='9')
int_ch1 = (hex_char1-48)*16; //// 0 的Ascll - 48
else if(hex_char1 >= 'A' && hex_char1 <='F')
int_ch1 = (hex_char1-55)*16; //// A 的Ascll - 65
else
int_ch1 = (hex_char1-87)*16; //// a 的Ascll - 97
i++;
unichar hex_char2 = [hexString characterAtIndex:i]; ///兩位16進制數中的第二位(低位)
int int_ch2;
if(hex_char2 >= '0' && hex_char2 <='9')
int_ch2 = (hex_char2-48); //// 0 的Ascll - 48
else if(hex_char1 >= 'A' && hex_char1 <='F')
int_ch2 = hex_char2-55; //// A 的Ascll - 65
else
int_ch2 = hex_char2-87; //// a 的Ascll - 97
int_ch = int_ch1+int_ch2;
NSLog(@"int_ch=%d",int_ch);
bytes[j] = int_ch; ///將轉化后的數放入Byte數組里
j++;
}
NSData *newData = [[NSData alloc] initWithBytes:bytes length:128];
NSLog(@"newData=%@",newData);
3,NSData 與 UIImage
NSData --> UIImage
UIImage*aimage = [UIImage imageWithData: imageData];
//例:從本地文件沙盒中取圖片并轉換為NSData
NSString*path = [[NSBundle mainBundle] bundlePath];
NSString*name = [NSString stringWithFormat:@"ceshi.png"];
NSString*finalPath = [path stringByAppendingPathComponent:name];
NSData*imageData = [NSData dataWithContentsOfFile: finalPath];
UIImage*aimage = [UIImage imageWithData: imageData];
UIImage-> NSData
NSData*imageData = UIImagePNGRepresentation(aimae);
4,NSData 與 NSMutableData
NSData --> MSMutableData
NSData*data=[[NSData alloc]init];
NSMutableData*mdata=[[NSMutableData alloc]init];
mdata=[NSDatadataWithData:data];
5.NSDictionary類型轉換為NSData類型:
//NSDictionary -> NSData:
NSDictionary *params = [NSDictionarydictionaryWithObjectsAndKeys: @"balance", @"key", @"remaining balance",@"label", @"45", @"value", @"USD", @"currencyCode",nil];
NSMutableData *data =[[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiveralloc] initForWritingWithMutableData:data];
[archiver encodeObject:paramsforKey:@"Some Key Value"];
[archiver finishEncoding];
6.NSData類型轉換為NSDictionary類型:
//NSData -> NSDictionary
NSData *data = [[NSMutableData alloc]initWithContentsOfFile:[self dataFilePath]];
NSKeyedUnarchiver *unarchiver =[[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *myDictionary = [[unarchiverdecodeObjectForKey:@"Some Key Value"] retain];
[unarchiver finishDecoding];[unarchiver release];
[data release];
7: NSData NSArray 轉換
NSArray *arr1= [[NSArray alloc]initWithObjects:@"0",@"5",nil];
NSData *data= [NSKeyedArchiver archivedDataWithRootObject:arr1];
NSArray *arr2= [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"->%@",[arr1 objectAtIndex:1]);
NSLog(@"->%@",[arr2 objectAtIndex:1]);