ios kb转m_iOS基础之字节处理(NSData,Byte,NSString转换)

本文介绍了在iOS中处理TCP传输协议的方法,包括如何将数据长度转换为4字节的Byte数组,使用两种不同的拼接方式(Byte数组和十六进制转换)组合数据,以及如何解析服务器返回的数据。涉及到NSData、Byte、NSString之间的转换操作。
摘要由CSDN通过智能技术生成

漫步

TCP传输协议:前2个子节为一个固定的字符,这里以0x809B为例,接着为4个子节(存放content的长度),然后为传输的内容content

TCP传输协议

以下内容都在Demo中,有兴趣可以下载

一、 拼接方式1---使用Byte数组

这里以传输一张图片为例

1.1前期准备---获取一张图片的大小

NSString *path= [[NSBundle mainBundle] pathForResource:@"ceshi" ofType:@"jpeg"];

NSData* content = [NSData dataWithContentsOfFile:path];

int value = (int)content.length;

1.2 将长度value转换为4个字节

Byte byteData[4] = {};

byteData[0] =(Byte)((value & 0xFF000000)>>24);

byteData[1] =(Byte)((value & 0x00FF0000)>>16);

byteData[2] =(Byte)((value & 0x0000FF00)>>8);

byteData[3] =(Byte)((value & 0x000000FF));

//转换为4个字节

1.3 拼接固定字符并转为NSData

Byte byte[] = {0x80,0x9B,byteData[0],byteData[1],byteData[2],byteData[3]};

NSData *temphead = [[NSData alloc]initWithBytes:byte length:6];

1.4 拼接传输的数据(图片)

//拼接content

NSMutableData *m_data = [[NSMutableData alloc] init];

[m_data appendData:temphead];

[m_data appendData:content];

二、 拼接方式2---使用十六进制转换

2.1前期准备---获取一张图片的大小

NSString *path= [[NSBundle mainBundle] pathForResource:@"ceshi" ofType:@"jpeg"];

NSData* content = [NSData dataWithContentsOfFile:path];

int value = (int)content.length;

2.2 将长度value转换十六进制string

//将长度转为十进制string

NSString* decimalString = [NSString stringWithFormat:@"%d",value];

//将十进制string转为十六进制并保证长度为8

NSString* firstHex = [decimalString decimalToHexWithLength:8];//私有方法(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值