以字节[]作为输入变量的C#的zlib.net代码示例
我花了3个小时搜索如何使用Zlib.net.dll解压字符串,但没有找到任何有用的东西 因为我的字符串是由使用zlib.dll的旧VB6程序压缩的,我不想每次解压字符串时都使用文件访问 问题是,在压缩之前,您需要知道字节[]的原始大小。 也可以使用动态数组对数据进行解码 代码如下:以字节[]作为输入变量的C#的zlib.net代码示例,c#,vb6-migration,C#,Vb6 Migration,我花了3个小时搜索如何使用Zlib.net.dll解压字符串,但没有找到任何有用的东西 因为我的字符串是由使用zlib.dll的旧VB6程序压缩的,我不想每次解压字符串时都使用文件访问 问题是,在压缩之前,您需要知道字节[]的原始大小。 也可以使用动态数组对数据进行解码 代码如下: private string ZlibNetDecompress(string iCompressData, uint OriginalSize) { byte[] todecode_
private string ZlibNetDecompress(string iCompressData, uint OriginalSize)
{
byte[] todecode_byte = Convert.FromBase64String(iCompressData);
byte[] lDecodeData = new byte[OriginalSize];
string lTempoString = System.Text.Encoding.Unicode.GetString(todecode_byte);
todecode_byte = System.Text.Encoding.Default.GetBytes(lTempoString);
string lReVal = "";
MemoryStream outStream = new MemoryStream();
MemoryStream InStream = new MemoryStream(todecode_byte);
zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outStream);
try
{
CopyStream(InStream, outZStream);
lDecodeData = outStream.GetBuffer();
lReVal = System.Text.Encoding.Default.GetString(lDecodeData);
}
finally
{
outZStream.Close();
InStream.Close();
}
return lReVal;
}
private void CopyStream(System.IO.Stream input, System.IO.Stream output)
{
byte[] buffer = new byte[2000];
int len;
while ((len = input.Read(buffer, 0, 2000)) > 0)
{
output.Write(buffer, 0, len);
}
output.Flush();
}
您可以使用框架中的GZipStreamClass。
var data = new byte[resultSizeMax];
using (Stream ds = new DeflateStream(stream, CompressionMode.Decompress))
for (var i=0; i< 1000; i+=ds.Read(data, i,1000-i);
var data=新字节[resultSizeMax];
使用(流ds=新的放气流(流,压缩模式.解压缩))
对于(变量i=0;i<1000;i+=ds.Read)(数据,i,1000-i);
您的问题到底是什么?