【发布时间】:2020-11-24 10:34:50
【问题描述】:
我有一个由 C# 代码生成的压缩字符串 "H4sIAAAAAAAEACtmyGBIZMhjKAHTALXiaIAOAAAA"。我尝试使用 zlib 解压缩,如下所示:
c = zlib.decompress(base64.b64decode("H4sIAAAAAAAEACtmyGBIZMhjKAHTALXiaIAOAAAA"), 16 + zlib.MAX_WBITS)
print(c)
print(c.decode('utf-8'))
上述代码sn-p的输出为:shantha
现在,如何使用 zlib 从原始字符串 "shantha" 取回压缩字符串 "H4sIAAAAAAAEACtmyGBIZMhjKAHTALXiaIAOAAAA"?
编辑: 创建压缩字符串的 C# 代码:
using System.IO;
using System;
using System.IO.Compression;
using System.Text;
public class Program
{
public static void Main(string[] args)
{
string plainText = "shantha";
byte[] buffer = Encoding.UTF8.GetBytes(plainText);
var memoryStream = new MemoryStream();
using (var gZipStream = new GZipStream(memoryStream, compressionMode.Compress, true))
{
gZipStream.Write(buffer, 0, buffer.Length);
}
memoryStream.Position = 0;
var compressedData = new byte[memoryStream.Length];
memoryStream.Read(compressedData, 0, compressedData.Length);
var gZipBuffer = new byte[compressedData.Length];
Buffer.BlockCopy(compressedData, 0, gZipBuffer, 0, compressedData.Length);
Console.WriteLine(Convert.ToBase64String(gZipBuffer));
}
}
【问题讨论】:
-
您的代码在我这边返回
s h a n t h a。c.decode("utf-16")但返回shantha。 -
我很难尝试将字符串编码回正确的压缩格式。您自己没有创建压缩字符串的代码吗?
-
我有。但它是在 C# 中。
-
张贴。如果代码是链接的,您可以在同一个问题中询问两种语言,就像这样。
-
@Hampus Laarsson - 已发布!
标签: c# python-3.x zlib