導航:首頁 > 文件處理 > 字元串壓縮流解決辦法

字元串壓縮流解決辦法

發布時間:2025-04-16 14:19:06

① 今天發現c#在做字元串壓縮的時候的一個bug

NO,NO,事實上默認的Default是指你的操作系統當前所使用的編碼類型,在中國一般來說是UTF-8

如果你要指定的話可以用Encoding.UTF-8

但是解壓的時候也要用同一種編碼形式,否則就會出錯。。。

補充:剛剛收到你的信息了,你把字元串壓縮之後,卻又用Encoding.GetString方法來得到字元串,我想錯就錯在這一步,你應該直接把它(也就是所得到的位元組數組)以二進制的形式寫進文件文件的後綴你可以自定義一個也沒問題,然後讀取的時候再從文件中讀取出來。

簡單地說就是把兩個 CompressString2String,DecompressString2String兩個函數修改一下:
注釋:按鈕一為壓縮(把textBox1中的文本進行壓縮然後寫入date.dt文件)
按鈕一為壓縮(把date.dt文件的數據讀出來進行解壓縮並且顯示在textBox2中)

static void Compress(Stream source, Stream dest)
{
using (GZipStream zipStream = new GZipStream(dest, CompressionMode.Compress, true))
{
byte[] buf = new byte[1024];
int len;
while ((len = source.Read(buf, 0, buf.Length)) > 0)
zipStream.Write(buf, 0, len);
}
}

static void Decompress(Stream source, Stream dest)
{
using (GZipStream zipStream = new GZipStream(source, CompressionMode.Decompress, true))
{
byte[] buf = new byte[1024];
int len;
while ((len = zipStream.Read(buf, 0, buf.Length)) > 0)
dest.Write(buf, 0, len);
}
}

public static bool CompressString2String(string strSource)
{
using (MemoryStream msSrc = new MemoryStream(Encoding.UTF8.GetBytes(strSource)))
using (MemoryStream msTgt = new MemoryStream())
{
Compress(msSrc, msTgt);
File.WriteAllBytes(Application.StartupPath+"data.dt",msTgt.ToArray());
}
return true;
}

public static string DecompressString2String()
{
using (MemoryStream msSrc = new MemoryStream(File.ReadAllBytes(Application.StartupPath + "data.dt")))
using (MemoryStream msTgt = new MemoryStream())
{
Decompress(msSrc, msTgt);
return Encoding.UTF8.GetString(msTgt.ToArray());
}
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(CompressString2String(textBox1.Text).ToString()+"Success!");
}

private void button2_Click(object sender, EventArgs e)
{
textBox2.Text = DecompressString2String();
}

再補充:
我想問一下,你要實現的是字元串加密?還是用於網路發送?
如果你是想把一個字元串轉化為另一種形式,讓別人看不懂,那就用加密技術,如果,是想實現將字元發送到遠程,也可以把我說的文件流改寫為網路流,但是你說的字元串轉換,我實在不明白?
要知道,字元串本身是由位元組數組組成,當你加壓之後,它本身的順序就會被打亂,而你UTF-8的字元集是有限的(不是任意的位元組組合都可以被認為是字元的),
簡單地說就是像你那樣做,你把加壓後的位元組數組(經過壓縮演算法轉換後的二進制數據)再轉化為字元串,就會造成數據丟失的情況,於是操作也就不會成功了。

閱讀全文

與字元串壓縮流解決辦法相關的資料

熱點內容
程序員放棄後會怎樣 瀏覽:157
河北模具編程 瀏覽:174
adb查找命令 瀏覽:304
安卓手機視頻文件夾怎麼打開 瀏覽:297
平板加密手機後怎麼關閉 瀏覽:552
流媒體伺服器應該注意什麼 瀏覽:522
d8命令編譯 瀏覽:939
壓縮包解壓需要多少空間 瀏覽:135
如何查找app屬性 瀏覽:376
android人臉識別技術 瀏覽:300
pc104編程 瀏覽:326
二維碼反編譯破解推廣 瀏覽:670
修改伺服器的mac地址 瀏覽:517
好玩的編程軟體 瀏覽:888
編程語言創始人有錢嗎 瀏覽:793
短視頻app怎麼獲客 瀏覽:4
查看雲伺服器的應用 瀏覽:423
javadump工具 瀏覽:555
程序員16g 瀏覽:417
程序員沒有辦法成為top怎麼辦 瀏覽:192