NSData,Byte,NSString 转换
//char 占一个字节
//int占四个字节
//当int变量值 处于 -128到127之间时,int char可以直接互相赋值!
//int 转 NSData int i = 1; NSData *data = [NSData dataWithBytes: &i length: sizeof(i)];
//将NSData转换成char,并以十六进制输出 Byte *bytes = (Byte *)[data bytes]; NSUInteger bufLen = data.length; for (int i = 0; i < bufLen; ++i) { NSLog(@"%x",bytes[i]); }
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]; 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=[NSData dataWithData:data]; 5,NSData合并为一个NSMutableData - (NSString *)filePathWithName:(NSString *)filename { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; return [documentsDirectory stringByAppendingPathComponent:filename]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //音频文件路径 NSString *mp3Path1 = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp3"]; NSString *mp3Path2 = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"mp3"]; //音频数据 NSData *sound1Data = [[NSData alloc] initWithContentsOfFile: mp3Path1]; NSData *sound2Data = [[NSData alloc] initWithContentsOfFile: mp3Path2]; //合并音频 NSMutableData *sounds = [NSMutableData alloc]; [sounds appendData:sound1Data]; [sounds appendData:sound2Data]; //保存音频 NSLog(@"data length:%d", [sounds length]); [sounds writeToFile:[self filePathWithName:@"tmp.mp3"] atomically:YES]; [window makeKeyAndVisible]; return YES; }
//char 转int ,比如说四个字节存储一个int型的类型高度 uint8_t a = 13; uint8_t b = 0; uint8_t c = 0; uint8_t d = 0; NSMutableData *ret = [[NSMutableData alloc] init]; [ret appendBytes:&a length:1]; [ret appendBytes:&b length:1]; [ret appendBytes:&c length:1]; [ret appendBytes:&d length:1]; Byte *bytes = (Byte *)[ret bytes]; UInt32 spsLength = *((uint16_t*)(bytes)); NSLog(@"%d",spsLength);