数据打包和解包入门篇
原文链接 http://zyoung.me/%E6%95%B0%E6%8D%AE%E6%89%93%E5%8C%85%E5%92%8C%E8%A7%A3%E5%8C%85%E5%85%A5%E9%97%A8%E7%AF%87/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
数据的传输和获取,通常会涉及到数据的压缩和解压等操作
<!--more-->
如果现在有这么个需求
1、从服务器下载的图片,根据图片的二进制数据流决定图片的格式,你会怎么办? (数据截取) 2、需要将用户每天24小时的生活状态传到服务器,然后可以按年/月/周/天取出并统计、展示等,你会怎么办?(字节数组)
对于上面的问题,我们就必须考虑数据结构,并实现压缩和解压等操作
下面给予一个简单的示例,希望有所启示
//打包
int tmpSize = 10;
Byte *tmpBuffer = malloc(sizeof(Byte)*tmpSize);
for (int i = 0;i<tmpSize;i++) {
tmpBuffer[i] = i;
}
NSData *data = [[NSData alloc] initWithBytes:tmpBuffer length:tmpSize];
//解包
NSInteger length = data.length;
Byte *parseBuffer = malloc(sizeof(Byte) * length);
[data getBytes:parseBuffer length:length];
// [data getBytes:parseBuffer range:NSMakeRange(0, length)];
Byte *p = parseBuffer;
Byte *q = parseBuffer+length;
while (p<q) {
int parseValue = *p;
NSLog(@"parse value is %d",parseValue);
++p;
}
free(tmpBuffer);
free(parseBuffer);