我正在尝试在 iOS 5.0 上膨胀 gzipped 字节缓冲区。 我正在使用 CocoaDev 中找到的 NSData 类别. 但是,每次我在 NSData 对象上调用 gzipInflate 时,它都会返回“nil”。
我尝试链接到 libz,为模拟器和设备构建,并尝试干净的构建,但没有成功。
NSData 对象包含有效的 gzip 压缩数据。
如有任何帮助,我们将不胜感激。
EDIT1:这是我正在使用的代码。
uint8_t appendArray[1];
for (int i=0; i != 1024; i++) {
appendArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t.
[tempdata appendBytes:appendArray length:1];
}
NSData *almostdata = [tempdata gzipInflate]; // Returns nil
assert(almostdata != nil); // Fails
Tempdata是一个NSMutableData对象,容量为1024字节。 readByte 是一种从网络流中读取一个字节的方法。 gzipInflate方法来自here . 流中的数据经过压缩后长度为 1024 字节。
EDIT2:这是一个 Z_BUF_ERROR,但输出缓冲区对于字节来说足够大。
EDIT3:这个问题只是因为我误读了网络协议(protocol)而引起的。我只需在尝试解压缩之前合并流中的所有数据即可。
最佳答案
我看不到你所有的代码 - 所以这有点像在黑暗中刺伤 - 但看起来你正在读入 uselessArray
- 但你正在附加来自 appendArray
...
应该这样:
uselessArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t.
[tempdata appendBytes:appendArray length:1];
是这样的:
uselessArray[0] = [self readByte]; // neccessary, because [self readByte] returns a uint8_t.
[tempdata appendBytes:uselessArray length:1];
?
关于objective-c - 在 iPhone 上膨胀 gzip 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069642/