首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将[NSData length]转换为NSData

如何将[NSData length]转换为NSData
EN

Stack Overflow用户
提问于 2010-12-02 01:25:43
回答 2查看 5.8K关注 0票数 0

例如:

代码语言:javascript
运行
复制
NSData *data = [NSData dataWithContentsOfFile:filePath]; 
int len = [data length]; 

如果len = 10000,我希望我可以将1000转换为NSData,如下所示

代码语言:javascript
运行
复制
char hoperesult[] = {0x10, 0x27, 0x00, 0x00}

并且hoperesult[]必须始终为4个字节

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-02 02:29:10

所以你想要的长度是4个小端字节,对吗?我想这样就可以了:

代码语言:javascript
运行
复制
unsigned int len = [data length];
uint32_t little = (uint32_t)NSSwapHostIntToLittle(len);
NSData *byteData = [NSData dataWithBytes:&little length:4];

(请注意,大多数网络协议都使用big-endian,但是您显示的是little-endian,所以这就是它的作用。)

票数 2
EN

Stack Overflow用户

发布于 2010-12-02 01:46:41

我不是100%确定你在这里的意思,但我认为你正在尝试用在'filePath‘文件中找到的值填充hoperesult。

代码语言:javascript
运行
复制
struct _hoperesult {
  char data[4];
} *hoperesult;

NSData *data = [NSData dataWithContentsOfFile:filePath];
NSUInteger len = [data length];
NSRange offset;
offset.location = 0;
offset.length = sizeof(_hoperesult);
NSData *hoperesultData;

while( (offset.location + offset.length)  < len ) {
  hoperesultData = [data subdataWithRange:offset];
  // the equivalent of your char hoperesult[] content...
  hoperesult = [hoperesultData bytes]
}

NSData的实例可以使用" bytes“方法返回指向实际数据字节的指针。它返回一个(const void *)。从理论上讲,您可以简单地将数据字节转换为char *并直接使用偏移量;也可以像上面的代码一样,返回较小的NSData块。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4327101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档