使用socket的时候,后台有时会要求发送byte数组,但是iOS开发中很少会用到byte数组,这是因为苹果已经讲byte封装了起来,我们平常使用的nsdata其实就是byte。在开发中遇到一个情况:
byte[] a = new byte[3];
a[0] = 12;
a[1] = 13;
a[2] = 14;
后台利用这样的方法创建了一个byte数组,要求前端也要这样传递,安卓端很好处理,但是iOS因为语言的问题,在网上没有找到类似的方法,但是有个相近的处理方法:点击这里查看。但是这个方法中介绍的一句并不适合:
HTONS 转换端序,从小端序转为大端序
这里不知道为什么,其实iOS上传的时候并不需求从小段转为大端,可能是后台处理方式的不一样,所以我是借用了作者的处理方式,但是去掉了 HTONS 的转换,这样我这边后台就可以拿到正确的数据了。下面是我的处理方式:
NSInteger companyId = 1;
NSInteger userId = 2017;
NSInteger mobile = 1;
NSInteger time = [self timeSwitchTimestamp];
NSInteger nowT = [[NSString stringWithFormat:@"%.f", [[NSDate date] timeIntervalSince1970] * 1000] integerValue];
NSInteger lastsend = nowT - time;
NSInteger sheetid = 12022949;
NSInteger sheetstatus = 1001;
NSInteger kind = 1;
NSMutableData * adata3 = [[NSMutableData alloc]init];
[adata3 appendBytes:&flag length:sizeof(flag)];
[adata3 appendBytes:&kind length:sizeof(kind)];
[adata3 appendBytes:&companyId length:sizeof(companyId)];
[adata3 appendBytes:&userId length:sizeof(userId)];
[adata3 appendBytes:&mobile length:sizeof(mobile)];
[adata3 appendBytes:&lastsend length:sizeof(lastsend)];
[adata3 appendBytes:&sheetid length:sizeof(sheetid)];
[adata3 appendBytes:&sheetstatus length:sizeof(sheetstatus)];
网友评论