如何将XZ压缩输出转换为NSString



我已经成功地设置了一个小型XZ压缩器,它返回一个std::字符串,其中包含压缩后的输出。为了处理结果,我需要将std::string"转换"为NSString。不幸的是有(编码?)问题:

尽管"abc"不是一个很好的例子,但它很好地说明了难度:

NSString *text = [_text string]; // Length is 3
std::string content = xz_compress([text UTF8String]); // Length is 60
NSString *convertedContent = [NSString stringWithCString:content.c_str() encoding:NSUTF8StringEncoding];
// convertedContent is (null) and 0 characters long

使用NSUnicodeStringEncoding使NSString至少有2个字符长,但它们与std::string中的字符不匹配。

我的问题:

  • 这种方式是可能的/更可取的方式(已经不确定)?
  • 如果是:我需要使用什么编码?

提前感谢!

保罗

我假设xz_compress输出是二进制数据。那么,为什么不尝试使用NSData dataWithBytes:length:方法呢?出于同样的原因,您也可以尝试使用string::data()而不是string::c_str:

NSData* convertedContent = [NSData dataWithBytes:content.data() length:content.length()];

相关内容

  • 没有找到相关文章

最新更新