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