您的位置:首页 > 其它

【项目分析】利用J#类库解决项目中数据压缩以及解压的问题

2011-02-28 16:59 573 查看
在上一篇文章(利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码),我已经提到,目前的项目需要进行平台移植,即JAVA平台服务迁移到DotNet平台服务中,服务是用来和公司的一款终端设备产品进行数据传输与交换。

解压代码

public static string _DecompressString(sbyte[] sBytes)
{
Inflater f = new Inflater();
f.setInput(sBytes);

ByteArrayOutputStream o = new ByteArrayOutputStream(sBytes.Length);
try
{
sbyte[] buf = new sbyte[1024];
while (!f.finished())
{
int got = f.inflate(buf);
o.write(buf, 0, got);
}
}
finally
{
o.close();
}

byte[] decompessBytes = SByteToByte(o.toByteArray());

return Encoding.Default.GetString(decompessBytes);
}
调用方法:

string baseStr1 = "eJwzMAADI3MgYWhgZGAIJIxMDY0NLQ0sjPQMEMDQVEFB4eyPrY+NjBTIAsGGRpYGBmZG5oZAky1I13/xwvZF1y5cOEKe7cQBAPx4Lgo=";

string str1 = ZipUtil.Decompress(baseStr1, ZipType.JSharp);
Console.WriteLine(str1);

string str2 = ZipUtil.Compress(str1, ZipType.JSharp);
Console.WriteLine(str2);
运行结果:





从运行结果上看,最后得到的BASE64字符串与原来的BASE64字符串保持一致了。

这样我就利用J#类库解决了项目中数据压缩以及解压的问题。有人可能要问我为什么要使用这样的一个解码规则呢?因为终端设备的程序已经固化在终端设备中了,它产生的HTTP数据头以及数据体,具有一定的规则,所以作为平台服务端,必须遵循这个规则来执行。

本篇文章作为一个分析项目中一些问题的思路,希望能够给大家带来些帮助吧!

附上本篇文章的源代码:JavaZipDemo.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: