iOS NSDictionary、NSData、JSON等 数据类型相互转换

1.NSDictionary类型转换为NSData类型:

  1. NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
  2. @"balance", @"key",
  3. @"remaining balance", @"label",
  4. @"45", @"value",
  5. @"USD", @"currencyCode",nil];
  6. NSMutableData *data = [[NSMutableData alloc] init];
  7. NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
  8. [archiver encodeObject:params forKey:@"Some Key Value"];
  9. [archiver finishEncoding];

2.NSData类型转换为NSDictionary类型:

  1. //NSData -> NSDictionary
  2. NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]];
  3. NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
  4. NSDictionary *myDictionary = [[unarchiver decodeObjectForKey:@"Some Key Value"] retain];
  5. [unarchiver finishDecoding];
  6. [unarchiver release];
  7. [data release];

3.NSDictionary类型转换为JSON数据类型:

  1. //NSDictionary -> JSON:
  2. NSString *jsonStr=[dict JSONRepresentation];

注意JSON与NSDictionary类型的转换一般会用到第三方公开的JSON库,读者可以在网上找到很多。

1. NSData 与 NSString
NSData-> NSString
NSString *aString = [[NSString alloc] initWithData:adata encoding:NSUTF8StringEncoding];

NSString->NSData
NSString *aString = @"1234abcd";
NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding];

2.NSData 与 Byte
NSData-> Byte数组
NSString *testString = @"1234567890";
NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];
Byte *testByte = (Byte *)[testData bytes];
for(int i=0;i<[testData length];i++)
printf("testByte = %d\n",testByte[i]);

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 *[email protected]"";
for(int i=0;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=0;
Byte bytes[128];

///3ds key的Byte 数组, 128位

for(int i=0;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);

时间: 2024-12-18 17:02:58

iOS NSDictionary、NSData、JSON等 数据类型相互转换的相关文章

iOS NSDictionary 转Json 去掉换行去掉空格

//dic 转json 如果用系统自带的会出现空格. + (NSString *)returnJSONStringWithDictionary:(NSDictionary *)dictionary{ //系统自带 // NSError * error; // NSData * jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:kNilOptions error:&error]; // NSString *

iOS NSDictionary &lt;--&gt; NSString(JSON) in Objc

NSDictionary --> NSString + (NSString*)stringINJSONFormatForObject:(id)obj { NSData *jsonData = [NSJSONSerialization dataWithJSONObject:obj options:0 // If that option is not set, the most compact possible JSON will be generated error:nil]; NSString

ios中常用数据类型相互转换

ios中常用数据类型相互转换 //1. NSMutableArray和NSArray互转 // NSArray转为NSMutableArray NSMutableArray *arrM = [arr mutableCopy]; //方法1 NSMutableArray *arrM = [NSMutableArray arrayWithArray:arr]; //方法2 // NSMutableArray转为NSArray NSArray *arr = [arrM copy]; //方法1 NSA

iOS 将NSArray、NSDictionary转换为JSON格式进行网络传输

http://blog.csdn.net/worldzhy/article/details/49982491 将NSArray.NSDictionary转换为JSON格式进行网络传输,是经常用到的,但是iOS没有提供方便的方法库.我们模拟一个实例,假设我们需要把一个自定义的一个模型(只有若干属性的Class)的数组转为一个JSON字符串,作为后端需要的一个参数传给后端,下面给出了实现方法: [objc] view plain copy //HSPictureModel数组转为json - (NS

NSDictionary,NSArray转成NSData(JSON)NSString类型

// // NSDictionary+JSONorNSString.h // UIKit数据转换 // // Created by mac on 15-4-4. // Copyright (c) 2015年 www.swift.com. All rights reserved. // #import <Foundation/Foundation.h> @interface NSDictionary (JSONorNSString) /** * 转换成JSON串字符串(没有可读性) * * @r

字典和JSON格式字符串相互转换

在iOS开发中,和服务器交互中,经常用到字典和JSON格式字符串相互转换. 1.JSON格式字符串转字典 + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString { if (jsonString == nil) { return nil; } NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *err; NSDi

iOS开发之JSON格式数据的生成与解析

本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据?  JSON格式取代了xml给网络传输带来了很大的便利,但是却没有了xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中.这时我们就需要一款在线校验工具 BeJson. 一.JSON是什么? JSON(JavaScript Object Notation) 是一种轻量级的

iOS中解析json多种方法

我感觉JSON解析,重要的是JSON解析之后对结果的处理JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典.向客户端请求的返回数据解析下面就简单介绍一下JSON解析过程其实就一句话 "data就是解析数据"!!!!!!!!!!!!!! //xcode自带解析类NSJSONSerialization从data中解析出数据放到字典中NSDictionary *weatherDic = [NSJSONSerialization JSONObjectW

子做嘴柞兹谞wisvfsNSDictionary,NSArray转成NSData(JSON)NSString类型

ufifgbNSDictionary,NSArray转成NSData(JSON)NSString类型NSDictionary,NSArray转成NSData(JSON)NSString类型纂诅租灼柞谞 v1795qp.cn.ec51.com/ 592r727.cn.ec51.com/ f31b6ca.cn.ec51.com/ s48ctk5.cn.ec51.com/ s9d9u37.cn.ec51.com/ r8jo5n7.cn.ec51.com/ p813g69.cn.ec51.com/ 4a