如何解决将二进制数据转换为 gzip 文件并解压为字符串 c#
我正在尝试解码表示 gzip 文件的二进制数据,我需要解压缩 gzip 以便我可以获得 gzip 中的 nbt(minecraft 符号)字符串,但是我在 GZipStream 中不断收到以下错误。阅读:
有人知道如何做到这一点吗?
这是我的代码:
public static string Decompress(string input)
{
byte[] compressed = Convert.FromBase64String(input); //This is the binary data
byte[] decompressed = Decompress(compressed);
return Encoding.UTF8.GetString(decompressed);
}
private static byte[] Decompress(byte[] input)
{
using (var source = new MemoryStream(input))
{
byte[] lengthBytes = new byte[4];
source.Read(lengthBytes,4);
var length = BitConverter.ToInt32(lengthBytes,0);
using (var decompressionStream = new GZipStream(source,CompressionMode.Decompress))
{
var result = new byte[length];
decompressionStream.Read(result,length); //Error
return result;
}
}
}
解决方法
这应该适合你:
public static string Decompress(string value)
{
byte[] buffer = Convert.FromBase64String(value);
byte[] decompressed;
using (var inputStream = new MemoryStream(buffer))
{
using var outputStream = new MemoryStream();
using (var gzip = new GZipStream(inputStream,CompressionMode.Decompress,leaveOpen: true))
{
gzip.CopyTo(outputStream);
}
decompressed = outputStream.ToArray();
}
return Encoding.UTF8.GetString(decompressed);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。