iOS基础(三)常用的相互转换的类

1、NSdata  >  NSString
        NSString *aString = [[NSString alloc] initWithData:adataen coding:NSUTF8StringEncoding];

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

3、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]);

4、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 ];

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

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

7、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); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值