我需要在android SQL数据库中解压缩一些blob数据。
开发应用程序/数据库的程序员破坏了他的手机,因此无法抓住他,这对公司来说有点时间敏感..
数据如下:
xœÅ—ÛŽÛ6†_…Ð"¹²“íµäÃÖM²M/Û´@¯ J¢$b%R ){7êkôÉ:¤,|l³¤&|A‘âü3ó I-ºARí ²´J,2ÊBg^á$¡,EYÌ.–ÖͽùY«…ÂQAЖ&*_Z®ã¼±PNh–«¶×.GÙÐÌ ýñ¬z‚µ¸H,ËƤ(d…c°Òõ÷VuŒˆnQ߃—W[ ó4cK+&L¡g&–nb¢Ÿ¶Bÿ»Õç8’bCñ`-(.39”DÐtnÞ’ô ½1H6Qoó›”‘wäM¬Õ¼H˜oˆØ¡*çŒ V—(Î1ËHÒÉ:#¶ïK—ñٿϱr‹ûµnÿ©£Û½ñØÑÇBx4ù6ûѳäôê¥yrn$øö(œM O3sfê™8ŸFÇìÆ/Ùq¿®ÿL«çèvD+Àú‘¢O4œ²÷5|ÎÉ…zI¹@;]N?qžAŒ×qÌk¦Ð£\TŸ}´Pi“˜2ô;lìôn‚±3öè·_×ì^'ðÂØÕûàufµÉ œ Ì
我无法弄清楚这是什么压缩.. 运行标准解压缩会引发异常,这些异常不会被压缩但是......
如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分:1)
我找到了答案。 在放缩数据之前,zLib的C#Lib需要剥离前2个字节。
以下是直接从数据库中清除zlib压缩数据的代码
// byte [] byteData仅用于数据的长度,如果你想让它更整洁,请修改Mem Stream行。
byte[] byteData = cursor.GetBlob (cursor.GetColumnIndexOrThrow("Data"));
MemoryStream stream = new MemoryStream(cursor.GetBlob (cursor.GetColumnIndexOrThrow("Data")),2,byteData.Length -2);
string BuildDataFromCompression = "";
using (DeflateStream decompressionStream = new DeflateStream(stream , CompressionMode.Decompress))
using (var streamReader = new StreamReader(decompressionStream))
{
BuildDataFromCompression = streamReader.ReadToEnd();
}