zoukankan      html  css  js  c++  java
  • NSData 与 NSString,Byte数组,UIImage 的相互转换(转)

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

    原文:http://w11h22j33.iteye.com/blog/1333521

  • 相关阅读:
    topcoder srm 320 div1
    topcoder srm 325 div1
    topcoder srm 330 div1
    topcoder srm 335 div1
    topcoder srm 340 div1
    topcoder srm 300 div1
    topcoder srm 305 div1
    topcoder srm 310 div1
    topcoder srm 315 div1
    如何统计iOS产品不同渠道的下载量?
  • 原文地址:https://www.cnblogs.com/lzjsky/p/2966066.html
Copyright © 2011-2022 走看看