NSData

简介:

1. NSData 与 NSString

NSData-> NSString

NSString *aString = [[NSString alloc] initWithData:adataencoding:NSUTF8StringEncoding];

NSString->NSData

NSString *aString = @"1234abcd";

NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding];

//将data类型的数据,转成UTF8的数据

+(NSString *)dataToUTF8String:(NSData *)data

{

NSString *buf = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

return [buf autorelease];

}

//将string转换为指定编码

+(NSString *)changeDataToEncodinString:(NSData *)data encodin:(NSStringEncoding )encodin{

NSString *buf = [[[NSString alloc] initWithData:data encoding:encodin] autorelease];

return buf;

}

2. 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];

3.NSData与NSArray  NSDictionary

+(NSString *)getLocalFilePath:(NSString *) fileName

{

return [NSString stringWithFormat:@"%@/%@%@", NSHomeDirectory(),@“Documents”,fileName];

}

包括将NSData写进Documents目录

从Documents目录读取数据

在进行网络数据通信的时候,经常会遇到NSData类型的数据。在该数据是dictionary结构的情况下,系统没有提供现成的转换成NSDictionary的方法,为此可以通过Category对NSDictionary进行扩展,以支持从NSData到NSDictionary的转换。声明和实现如下:

+ (NSDictionary *)dictionaryWithContentsOfData:(NSData *)data {

CFPropertyListRef list = CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)data, kCFPropertyListImmutable, NULL);

if(list == nil) return nil;

if ([(id)list isKindOfClass:[NSDictionary class]]) {

return [(NSDictionary *)list autorelease];

}

else {

CFRelease(list);

return nil;

}

}

NSDate

//函数作用 :date根据formatter转换成string

+(NSString*)dateToString:(NSString *)formatter date:(NSDate *)date

{

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:formatter];

return[dateFormatter stringFromDate:date];

}

//函数作用 :string类型的时间戳转换成时间

+(NSString*)dateStringToString:(NSString *)dateStr

{

if ([dateStr isKindOfClass:[NSNull class]]) {

return nil;

}

else{

NSInteger time = [dateStr intValue];

NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];

NSString *timestr = [NSString stringWithFormat:@"%@",date];

NSRange rang;

rang.location = 0;

rang.length = 10;

NSString *needtime = [timestr substringWithRange:rang];

return needtime;

}

}

//函数作用 :将日期从原格式转换成需要的格式

+(NSString*)convertDateFormatter:(NSString*)sourceFormatter

targetFormatter:(NSString*)targetFormatter

dateString:(NSString*)dateString

{

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:sourceFormatter];

NSDate *date = [dateFormatter dateFromString:dateString];

[dateFormatter setDateFormat:targetFormatter];

return[dateFormatter stringFromDate:date];

}

//函数作用 :将日期字符串转换成date

+(NSDate *)stringToDate:(NSString *)formatter dateString:(NSString *)dateString{

NSDateFormatter *dateFormatter= [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:formatter];

return [dateFormatter dateFromString:dateString];

}

//时间戳转换成时间

NSInteger time = [[dic objectForKey:@"press_date"] intValue];

NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];

NSString *timestr = [NSString stringWithFormat:@"%@",date];

NSRange rang;

rang.location = 0;

rang.length = 10;

NSString *needtime = [timestr substringWithRange:rang];

1. NSData 与 NSString

NSData-> NSString

NSString *aString = [[NSString alloc] initWithData:adataencoding: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 *hexStr=@"";

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);

iOS 低位、高位字节转换为int

分类:  IOS开发 
2012-07-16 10:24 
876人阅读  评论(0) 
收藏 
举报

iosbyte网络

//将高位字节转换为int

-(int )hBytesToInt:(Byte[]) b

{

int s = 0;

for (int i = 0; i < 3; i++)

{

if (b[i] >= 0)

{

s = s + b[i];

} else

{

s = s +256 + b[i];

}

s = s * 256;

if (b[3] >= 0)

{

s = s + b[3];

} else

{

s = s + 256 + b[3];

}

}

return s;

}

//将低位字节转换为int

在网络上传输的是以低位字节进行的; htonl,将int转换为网络字节序的int,ntohl,将网络字节序的int转换回来,-(int) lBytesToInt:(Byte[]) b,将以低位传输的网络字节序bytes数组转换为htonl之后对应的值

-(int) lBytesToInt:(Byte[]) b

{

int s = 0;

for (int i = 0; i < 3; i++)

{

if (b[3-i] >= 0)

{

s = s + b[3-i];

} else

{

s = s + 256 + b[3-i];

}

s = s * 256;

}

if (b[0] >= 0)

{

s = s + b[0];

} else {

s = s + 256 + b[0];

}

return s;

}

时间: 2024-10-14 06:14:51

NSData的相关文章

iOS中UIImage存为本地文件与UIImage转换为NSData

UIImage *[email protected]"XXX"; //png格式 NSData *imagedata=UIImagePNGRepresentation(image); //JEPG格式 //NSData *imagedata=UIImageJEPGRepresentation(image); NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES

iOS解决NSData转NSString后字符为空

iOS中,将NSData转NSString的一般方法为[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];但是当data中包含00时,所获得的新字符就会为nil,这时我们应该这样转 [NSString stringWithUTF8String:[data bytes]];

IOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在: (apple是用户名, 8.0是模拟器版本)/Users/apple/Libra

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

1.NSDictionary类型转换为NSData类型: NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"balance", @"key", @"remaining balance", @"label", @"45", @"value", @"USD", @"curre

objective-c 下面int 和 NSData数据 互相转换的方法

抄自这里 int i = 1; NSData *data = [NSData dataWithBytes: &i length: sizeof(i)]; int i; [data getBytes: &i length: sizeof(i)];

NSData 创建自定义档案

自定义文档生成NSData // 可变的NSData NSMutableData *data = [ NSMutableData data ] ; // 初始化序列化对象 NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data] ; // 序列化对象 [archiver encodeObject:@"value" forKey:@"key"] ;

NSData NSDate NSString NSArray NSDictionary 相互转化

//    NSData  NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil

NSValue NSNumber NSData类

NSValue NSNumber NSData类 步骤1 NSValue 我们先看看NSValue能做什么: 一个NSValue对象是用来存储一个C或者Objective-C数据的简单容器.它可以保存任意类型的数据,比如 int,float,char,当然也可以是指pointer, structure, and object id.NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里,例如那些需要其元素是对象的数据结构,如NSArray或者NSSet 的实例.需要注意的是NSV

FMDB使用的一点心得:数据库创建、制表、查询等以及image转换成二进制nsdata保存到数据库中

<span style="font-size:18px;">//首先,获取数据库的路径,(如果不存在,就是我们想要存储的路径),不用担心每次都创建数据库会重复,不会的,如果没有则创建,有了就不会再重复创建: //接下来,我们要制表,首先我们先查看我们的表是否已经存在,方法在下面代码中:如果存在则跳过,不存在则创建</span> -(void)DataBaseInit { //获取Document文件夹下的数据库文件,没有则创建 NSString *dbPath