IOS中的数据类型转换
来源:互联网 发布:新开的淘宝店怎么装修 编辑:程序博客网 时间:2024/05/14 05:32
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(inti=0;i<[testData length];i++)
printf("testByte = %d\n",testByte[i]);
Byte数组-> NSData
Bytebyte[] = {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(inti=0;i<[encryData length];i++)
{
NSString*newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数
if([newHexStrlength]==1)
hexStr = [NSStringstringWithFormat:@"%@0%@",hexStr,newHexStr];
else
hexStr = [NSStringstringWithFormat:@"%@%@",hexStr,newHexStr];
}
NSLog(@"bytes的16进制数为:%@",hexStr);
16进制数->Byte数组
/////将16进制数据转化成Byte 数组
NSString*hexString = @"3e435fab9c34891f"; //16进制字符串
intj=0;
Bytebytes[128]; ///3ds key的Byte 数组, 128位
for(inti=0;i<[hexString length];i++)
{
intint_ch; /// 两位16进制数转化后的10进制数
unicharhex_char1 = [hexString characterAtIndex:i]; ////两位16进制数中的第一位(高位*16)
intint_ch1;
if(hex_char1 >='0' && hex_char1 <='9')
int_ch1 = (hex_char1-48)*16; //// 0 的Ascll - 48
elseif(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++;
unicharhex_char2 = [hexString characterAtIndex:i]; ///两位16进制数中的第二位(低位)
intint_ch2;
if(hex_char2 >='0' && hex_char2 <='9')
int_ch2 = (hex_char2-48);//// 0 的Ascll - 48
elseif(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中的数据类型转换
一、基础数据类型
IOS代码
1. NSString *tempA = @"123";
2. NSString *tempB = @"456";
1,字符串拼接
1. NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];
2,字符转int
1. int intString = [newString intValue];
3,int转字符
1. NSString *stringInt = [NSString stringWithFormat:@"%d",intString];
4,字符转float
1. float floatString = [newString floatValue];
5,float转字符
1. NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
二、常用数据类型
一、time_t介绍
包含文件:
#ifndef__TIME_T
#define__TIME_T
typedef long time_t;
#endif
既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。比如微软在Visual C++中采用了__time64_t数据类型来保存日历时间,并通过_time64()函数来获得日历时间(而不是通过使用32位字的time()函数),这样就可以通过该数据类型保存3001年1月1日0时0分0秒(不包括该时间点)之前的时间。
在time.h头文件中,我们还可以看到一些函数,它们都是以time_t为参数类型或返回值类型的函数:
double difftime(time_t time1, time_t time0);
time_t mktime(struct tm * timeptr);
time_t time(time_t * timer);
char * asctime(const struct tm * timeptr);
char * ctime(const time_t *timer);
此外,time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的把年月日时分秒分开显示的时间格式tm:
struct tm * gmtime(const time_t *timer);
NSData-> NSString
NSString
NSString->NSData
NSString
NSData
2.NSData
NSData-> Byte数组
NSString
NSData
Byte
for(int
printf("testByte = %d\n",testByte[i]);
Byte数组-> NSData
Byte
NSData
Byte数组->16进制数
Byte
NSString
for(int
{
NSString
if([newHexStr
hexStr = [NSString
else
hexStr = [NSString
}
NSLog(@"bytes
16进制数->Byte数组
/////
NSString
int
Byte
for(int
{
int
unichar
int
if(hex_char1 >=
int_ch1 = (hex_char1-48)*16;
else
int_ch1 = (hex_char1-55)*16;
else
int_ch1 = (hex_char1-87)*16;
i++;
unichar
int
if(hex_char2 >=
int_ch2 = (hex_char2-48);
else
int_ch2 = hex_char2-55;
else
int_ch2 = hex_char2-87;
int_ch = int_ch1+int_ch2;
NSLog(@"int_ch=%d",int_ch);
bytes[j] = int_ch;
j++;
}
NSData
NSLog(@"newData=%@",newData);
3. NSData
NSData->UIImage
UIImage
//例:从本地文件沙盒中取图片并转换为NSData
NSString
NSString
NSString
NSData
UIImage
UIImage-> NSData
NSData
一、基础数据类型
IOS代码
1,字符串拼接
2,字符转int
3,int转字符
4,字符转float
5,float转字符
二、常用数据类型
一、time_t介绍
包含文件:
#ifndef
#define
typedef long
#endif
既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。比如微软在Visual C++中采用了__time64_t数据类型来保存日历时间,并通过_time64()函数来获得日历时间(而不是通过使用32位字的time()函数),这样就可以通过该数据类型保存3001年1月1日0时0分0秒(不包括该时间点)之前的时间。
在time.h头文件中,我们还可以看到一些函数,它们都是以time_t为参数类型或返回值类型的函数:
double difftime(time_t time1, time_t time0);
time_t mktime(struct tm * timeptr);
time_t time(time_t * timer);
char * asctime(const struct tm * timeptr);
char * ctime(const time_t *timer);
此外,time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的把年月日时分秒分开显示的时间格式tm:
struct tm * gmtime(const time_t *timer);