我在NSData上写了一个用libSnappy进行压缩的简短类别.它在压缩过程中就像一个魅力,但解压缩代码会产生SNAPPY_INVALID_INPUT
.有趣的是,尽管Op-Code无效,但snappy仍然result
用未压缩的数据填充我的缓冲区.有谁知道为什么snappy向我扔这个?
- (NSData*)dataBySnappyUncompression {
NSMutableData *result = nil;
if (self.bytes != NULL) {
size_t uncompress_result = 0;
snappy_status opCode = snappy_uncompressed_length(self.bytes, self.length, &uncompress_result);
if (opCode == SNAPPY_OK) {
result = [NSMutableData dataWithLength:uncompress_result];
opCode = snappy_uncompress(self.bytes, self.length, [result mutableBytes], &uncompress_result);
if (opCode == SNAPPY_OK) {
[result setLength:uncompress_result];
return result;
}
}
}
LEPLog(@"Failed snappy de-compress: tried to de-compress %lu bytes", self.length);
NSAssert(nil, @"Failed Snappy de-compress");
result = nil;
return result;
}
Run Code Online (Sandbox Code Playgroud)
我应该注意,正在压缩/未压缩的数据是NSKeyedArchiver
调用的结果.
归档时间: |
|
查看次数: |
636 次 |
最近记录: |