NSData *data = [NSData dataWithContentsOfFile:filePath];
int len = [data length];
如果len = 10000, 我希望我可以1000转换为NSData的样子
char hoperesult[] = {0x10, 0x27, 0x00, 0x00}
和hoperesult []必须总是4字节
NSData *data = [NSData dataWithContentsOfFile:filePath];
int len = [data length];
如果len = 10000, 我希望我可以1000转换为NSData的样子
char hoperesult[] = {0x10, 0x27, 0x00, 0x00}
和hoperesult []必须总是4字节
所以你想要4个小端字节的长度,是否正确?我认为,这将做到这一点:
unsigned int len = [data length];
uint32_t little = (uint32_t)NSSwapHostIntToLittle(len);
NSData *byteData = [NSData dataWithBytes:&little length:4];
(注意,大多数网络协议采用大端,但你表现出小尾数所以这就是这样做。)
我不是100%确定你在这里的意思,但我认为你试图用'filePath'文件中找到的值填充hoperesult。
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。
希望有帮助!