iOS_NSdata/NSString/Byte等的转换

来源:互联网 发布:股票分析算法方法 编辑:程序博客网 时间:2024/06/16 18:02

项目时期, 遇到过的各种数据类型的转换, 希望对大家有所帮助!

    /**

     * 1. NSData> NSString

     */

   NSData *data;

    

    NSString *str = [[NSStringalloc] initWithData:dataencoding:NSUTF8StringEncoding];

    

   /**

     *  2. NSString> NSData

     */

   NSString *string = @"abc123";

    

    NSData *aData = [stringdataUsingEncoding: NSUTF8StringEncoding];

    

   /**

     *  3. NSData> Byte数组

     */

   NSString *testStr = @"1234567890";

    

    NSData *testData = [testStrdataUsingEncoding: NSUTF8StringEncoding];

    

   Byte *testByte = (Byte *)[testDatabytes];

    

   for(int i=0;i<[testDatalength];i++)

        

   NSLog(@"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 = [[NSDataalloc] initWithBytes:bytelength:24];

    


   /**

     *  5. Byte数组->16进制数

     */

   Byte *bytes = (Byte *)[aDatabytes];

    

   NSString *hexStr=@"";

    

   NSData *encryData;

    

   for(int i=0;i<[encryDatalength];i++)

    {

       NSString *newHexStr = [NSStringstringWithFormat:@"%x",bytes[i]&0xff];///16进制数

       if([newHexStr length]==1){

            

            hexStr = [NSStringstringWithFormat:@"%@0%@",hexStr,newHexStr];

        }

       else {

            

            hexStr = [NSStringstringWithFormat:@"%@%@",hexStr,newHexStr];

        }

    }

    NSLog(@"bytes16进制数为:%@",hexStr);



    /**

     * 6. 16进制数->Byte数组

     */

    ///// 16进制数据转化成Byte数组

    

    NSString*hexString =@"3e435fab9c34891f";//16进制字符串

    

   int j=0;

    

    Byte bytes[128]; ///3ds keyByte 数组, 128

    

   for(int i=0;i<[hexStringlength];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;  //// 0Ascll - 48

        

       else if(hex_char1 >='A' && hex_char1 <='F')

            

            int_ch1 = (hex_char1-55)*16;//// AAscll - 65

        

       else

            

            int_ch1 = (hex_char1-87)*16;//// aAscll - 97

        

        i++;

        

       unichar hex_char2 = [hexString characterAtIndex:i]; ///两位16进制数中的第二位(低位)

        

       int int_ch2;

        

       if(hex_char2 >= '0' && hex_char2 <='9')

            

            int_ch2 = (hex_char2-48);//// 0Ascll - 48

        

       else if(hex_char1 >='A' && hex_char1 <='F')

            

            int_ch2 = hex_char2-55;//// AAscll - 65

        

       else

            

            int_ch2 = hex_char2-87;//// aAscll - 97

        

        int_ch = int_ch1+int_ch2;

        

       NSLog(@"int_ch=%d",int_ch);

        

        bytes[j] = int_ch; ///将转化后的数放入Byte数组里

        

        j++;

        

    }

    

   NSData *newData = [[NSDataalloc] initWithBytes:byteslength:128];

    

   NSLog(@"newData=%@",newData);

    

    

   /**

     *  7. NSData UIImage

     */

    

    /*--------------- NSData>UIImage -------------*/

   NSData *imageData;

    

   UIImage *aimage = [UIImageimageWithData:imageData];

    

    //例:从本地文件沙盒中取图片并转换为NSData

    

   NSString *path = [[NSBundlemainBundle] bundlePath];

    

   NSString *name = [NSStringstringWithFormat:@"ceshi.png"];

    

   NSString *finalPath = [path stringByAppendingPathComponent: name];

    

   NSData *imageData1 = [NSDatadataWithContentsOfFile: finalPath];

    

   UIImage *aimage1 = [UIImageimageWithData: imageData1];

    

    /*-------------- UIImage> NSData ------------*/

    

   NSData *imageData2 = UIImagePNGRepresentation(aimage);




0 0
原创粉丝点击