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


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


Byte数组->16进制数

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

NSString *hexStr=@"";

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


{

NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes&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 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); 


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

 

关于 NSData 的数据类型(2进制,16进制之间)及深入剖析的更多相关文章

  1. 关于 NSData 的数据类型(2进制,16进制之间)及深入剖析(转)

    . NSData 与 NSString NSData-> NSString NSString *aString = [[NSString alloc initWithData:adataenco ...

  2. ASCII, Unicode, UTF-8, 8进制, 16进制等各种编码学习理解笔记

    字符编码的发展历史 Unicode和UTF-8有何区别? 在这个问题下的于洋的最高票回答中,比较完整地介绍了字符编码的发展历史,为了便于记忆,再次简要概括一番. 一个字节:最初一个字节的标准是混乱的, ...

  3. JS吧数字转成2进制 8进制16进制数据

    ; number.toString(); //转成2进制 number.toString();//转成8进制 number.toString();//转成10进制 number.toString(); ...

  4. Oracle中如何进行进制转换(2进制,10进制,16进制)

    1.16进制转换为10进制 可以通过to_number函数实现 SQL> select to_number('19f','xxx') from dual; TO_NUMBER('19F','XX ...

  5. java中 8进制 10进制 2进制 16进制 相互转换

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  6. C++ 10进制, 16进制, ASCII码, 单字节与多字节的相互转换

    这些简单的转换是用的比较频繁的, 因此将这些功能全部封装在一个类中 头文件 #pragma once #include <stdlib.h> #include <string> ...

  7. Delphi - 10进制16进制相互转换

    10进制转16进制 使用IntToHex可以实现十进制到十六进制的转换,注意这里的参数有两个,第一个表示需要被转换的10进制数,第二个表示转换后用几位来显示16进制数. 代码如下: function ...

  8. c#与js中10进制16进制的转化,记录防忘

    js: var param="11"; param=parseInt(param,16);  //17 param=parseInt(param,10);  //11 //后面的参 ...

  9. 【转】iOS中16进制转10进制

    原文网址:http://www.voidcn.com/blog/u012198553/article/p-4976772.html /// 将十六进制的字符串转化为NSData - (NSData ) ...

随机推荐

  1. 多线程----Thread类,Runnable接口,线程池,Callable接口,线程安全

    1概念 1.1进程 进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 任务管理器中: 1.2线程 线程是进程中的一个执行单元 ...

  2. 通过Maven构建打包Spring boot,并将config配置文件提取到jar文件外

    如果通过不同的IDE打包,着实会觉得依赖性太大,并且容易出现错误,操作也比较复杂 同时,spring-boot-maven-plugin的使用感觉,相关配置太少,并且无法满足方便部署和运行的需求. 这 ...

  3. 【开发小结】Two Steps from Deadline

    进度条可以救我也可以杀死我 # START 2018年4月17日晚我测试了11组四则运算的UI,每个exe程序生成的每一道题都有恐怖的倒计时.PSP表格清晰的记录了开发过程中消耗的时间,但是在结对作业 ...

  4. 【虚拟机-网关】如何在使用应用程序网关和 Nginx 的环境下实现强制 HTTPS 跳转

    背景介绍 大家在使用 Nginx 部署网站时,实现 HTTP 到 HTTPS 的强制跳转是非常容易的事情,一般可以使用rewrite 命令或者使用返回自定义 301 页面的方法对 HTTP 请求进行 ...

  5. node执行cmd命令方法

    var cmd='tasklist';//获取 子进程模块的exec方法,用于执行cmd命令var exec = require('child_process').exec; //运行 定义的cmd命 ...

  6. 突然心血来潮,想写写我在java面试中遇到的事。作为一个应届生,我觉得我的情况都与大部分应届生是差不多的,希望你们能在这上面得到一些有用的

    面试过程吧,怎么说呢?从一开始接触面试到现在成功了几家,这中间我确实收获了许多,那我就从我第一次面试开始讲吧. 第一次面试是有人介绍过来的,总之还是有一位贵人相助,所以第一次面试时,面试官很好没有怎么 ...

  7. javaweb基础(8)_HttpServletResponse生成验证码

    一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,

  8. javaweb基础(6)_servlet配置参数

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  9. 共享服务-FTP基础(一)

    介绍:文件传输协议FTP 两种模式:服务器角度 主动(PORT style):服务器主动连接 命令(控制):客户端:随机port --- 服务器:tcp21 数据:客户端:随机port ---服务 ...

  10. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...