数据库压缩数据(SQLite Android)

时间:2016-02-22 08:48:00

标签: android sqlite compression

我需要在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µÉ œ Ì

我无法弄清楚这是什么压缩.. 运行标准解压缩会引发异常,这些异常不会被压缩但是......

如果有人能指出我正确的方向,我会非常感激。

1 个答案:

答案 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();
}