NSData之间数据类型转化

在做TCP数据传输中,协议往往需要传输的是Byte数组,而在iOS中我们常常都是发送的NSData类型,这时我们就需要转化。具体操作如下:

  • Byte 转化为 NSData
Byte byte[] = {0x55, 0x07, 0x02, 0x01, 0x1A, 0x01, 0xAA};
NSData *data = [NSData dataWithBytes:byte lenght:7];
复制代码
  • NSData 转化为 Byte
NSString *testString = @"1234567890";  
NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];  
Byte *testByte = (Byte *)[testData bytes];
复制代码
  • int 转化为 NSData
int i = 1;
NSData *data = [NSData dataWithBytes:&i length: sizeof(i)];
复制代码
  • NSData 转化为 int
int k;
[data getBytes: &k length: sizeof(k)];
复制代码
  • NSData 转化为 NSString
NSString *aString = [[NSString alloc] initWithData:adata encoding:NSUTF8StringEncoding];
复制代码
  • NSString 转化为 NSData
NSString *aString = @"1234";
NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding];
复制代码
  • UIImage 转化为 NSData
NSData *imageData = UIImagePNGRepresentation(image);
复制代码
  • NSData 转化为 UIImage
NSData *imageData = [NSData dataWithContentsOfFile: filePath];  
UIImage *image = [UIImage imageWithData: imageData];
复制代码
注意

假如你们公司后台是java开发的,而之间又要进行数据传输,那么****可能 ****就会涉及大小端的数据问题。因为java默认是大端,iOS采用的是小端模式,所以需要转化。具体操作如下:

  1. 先进行大小端判断
int checkCPUendian() {//返回1,为小端;反之,为大端;
    union
    {
        unsigned int  a;
        unsigned char b;
    }c;
    c.a = 1;
    return 1 == c.b;
}
复制代码
  1. 再将小端转化为大端, 利用C语言函数ntohl()进行转换
int newSize = size;
    if (checkCPUendian() == 1) {
        newSize = ntohl(size);//小端转大端
    }
复制代码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值