【问题标题】:Add header information to NSData将标头信息添加到 NSData
【发布时间】:2012-08-19 17:49:27
【问题描述】:

我想通过 iOS 设备通过 BSD Socket 发送图像。

众所周知,一张图片被分成几个包发送出去,所以接收方需要图片的大小。

所以我想在图片二进制数据的开头插入大小。

NSData* image = UIImagePNGRepresentation(screenShot);
NSUInteger len = [image length];
NSMutableData *header = [[NSMutableData alloc] initWithBytes:&len length:sizeof(NSUInteger)];
[header appendData:msg];

Receiver 获取 NSData 并解析

NSUInteger len;
[header getBytes:&len length:sizeof(NSUInteger)]

我尝试插入 int、char 和 NSString,但我从来没有得到正确的大小数字。我的解决方案有什么问题? 还有更好的吗?

【问题讨论】:

  • 你的代码没问题。一定是别的东西。

标签: ios image sockets nsdata


【解决方案1】:

发件人

uint32_t len = [image length];
NSLog(@"Len = %u", len);
NSMutableData *header = [NSMutableData dataWithCapacity:sizeof(len) + len];
[header appendBytes:htonl(len) length:sizeof(len)];  // use network order
[header appendData:image];

接收者

uint32_t len;
[header getBytes:&len length:sizeof(uint32_t)];
len = ntohl(len); // network to host
printf("Len = %u\n", len);

【讨论】:

    【解决方案2】:

    我终于解决了iOS NSData+Base64 Category http://projectswithlove.com/projects/NSData_Base64.zip的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      相关资源
      最近更新 更多