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。
希望有幫助!