将字节数组解压缩为通过BinaryReader进行字符串生成空字符串(Decompress byte array to string via BinaryReader yields empty str

编程入门 行业动态 更新时间:2024-10-24 21:31:32
将字节数组解压缩为通过BinaryReader进行字符串生成空字符串(Decompress byte array to string via BinaryReader yields empty string)

我正在尝试解压缩一个字节数组,并使用二进制读取器将其读入一个字符串中。 当执行以下代码时,inStream的位置从0变为数组的长度,但str始终是一个空字符串。

BinaryReader br = null; string str = String.Empty; using (MemoryStream inStream = new MemoryStream(pByteArray)) { GZipStream zipStream = new GZipStream(inStream, CompressionMode.Decompress); BinaryReader br = new BinaryReader(zipStream); str = br.ReadString(); inStream.Close(); br.Close(); }

I am trying to decompress a byte array and get it into a string using a binary reader. When the following code executes, the inStream position changes from 0 to the length of the array, but str is always an empty string.

BinaryReader br = null; string str = String.Empty; using (MemoryStream inStream = new MemoryStream(pByteArray)) { GZipStream zipStream = new GZipStream(inStream, CompressionMode.Decompress); BinaryReader br = new BinaryReader(zipStream); str = br.ReadString(); inStream.Close(); br.Close(); }

最满意答案

你没有展示如何压缩数据,但这里有一个压缩和解压缓冲区的完整例子:

using System; using System.IO; using System.IO.Compression; using System.Text; class Program { static void Main() { var test = "foo bar baz"; var compressed = Compress(Encoding.UTF8.GetBytes(test)); var decompressed = Decompress(compressed); Console.WriteLine(Encoding.UTF8.GetString(decompressed)); } static byte[] Compress(byte[] data) { using (var compressedStream = new MemoryStream()) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) { zipStream.Write(data, 0, data.Length); zipStream.Close(); return compressedStream.ToArray(); } } static byte[] Decompress(byte[] data) { using (var compressedStream = new MemoryStream(data)) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress)) using (var resultStream = new MemoryStream()) { zipStream.CopyTo(resultStream); return resultStream.ToArray(); } } }

You haven't shown how is the data being compressed, but here's a full example of compressing and decompressing a buffer:

using System; using System.IO; using System.IO.Compression; using System.Text; class Program { static void Main() { var test = "foo bar baz"; var compressed = Compress(Encoding.UTF8.GetBytes(test)); var decompressed = Decompress(compressed); Console.WriteLine(Encoding.UTF8.GetString(decompressed)); } static byte[] Compress(byte[] data) { using (var compressedStream = new MemoryStream()) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) { zipStream.Write(data, 0, data.Length); zipStream.Close(); return compressedStream.ToArray(); } } static byte[] Decompress(byte[] data) { using (var compressedStream = new MemoryStream(data)) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress)) using (var resultStream = new MemoryStream()) { zipStream.CopyTo(resultStream); return resultStream.ToArray(); } } }

更多推荐

本文发布于:2023-07-26 03:51:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1270719.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   解压缩   字符串   字节   空字符串

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!