неявного преобразование теряет целочисленную точность: беззнаковая долго "до«UINT» (ака беззнакового INT ')неявного преобразования теряет целочисленную точность в методе сжатия ZLib
Я пытаюсь обновить приложение из 32 бит до 64 бит, поскольку при изменении архитектуры я получил ошибку, описанную выше.
У меня есть метод, который принимает NSData, который является сжатым zlib и возвращает распакованные данные.
Это метод.
- (NSData*) dataByDecompressingData:(NSData*)data {
NSLog(@"%lu", (unsigned long)data.length);
Byte* bytes = (Byte*)[data bytes];
NSInteger len = [data length];
NSMutableData *decompressedData = [[NSMutableData alloc] initWithCapacity:COMPRESSION_BLOCK];
Byte* decompressedBytes = (Byte*) malloc(COMPRESSION_BLOCK);
z_stream stream;
int err;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
stream.opaque = (voidpf)0;
stream.next_in = bytes;
err = inflateInit(&stream);
CHECK_ERR(err, @"inflateInit");
while (true) {
stream.avail_in = len - stream.total_in; // this is where the error happens the yellow triangle is under the "minus" -
stream.next_out = decompressedBytes;
stream.avail_out = COMPRESSION_BLOCK;
err = inflate(&stream, Z_NO_FLUSH);
[decompressedData appendBytes:decompressedBytes length:(stream.total_out-[decompressedData length])];
if(err == Z_STREAM_END)
break;
CHECK_ERR(err, @"inflate");
}
err = inflateEnd(&stream);
CHECK_ERR(err, @"inflateEnd");
free(decompressedBytes);
return decompressedData;
}
Я не уверен, как это исправить .. Я попытался ввести отливать Len используя (INT), однако это еще доза не работает.
Любая помощь будет оценена по достоинству.
Чтобы добавить к этому, это предупреждение должно быть абсолютно безопасным, если вы работаете в <4 ГБ данных за раз. – StilesCrisis