當前位置:首頁 » 文件管理 » 壓縮新BUG

壓縮新BUG

發布時間: 2022-04-27 15:12:33

Ⅰ 今天發現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的字元集是有限的(不是任意的位元組組合都可以被認為是字元的),
簡單地說就是像你那樣做,你把加壓後的位元組數組(經過壓縮演算法轉換後的二進制數據)再轉化為字元串,就會造成數據丟失的情況,於是操作也就不會成功了。

Ⅱ 為什麼我所有的7Z文件都是解壓錯誤的

出錯原因:
1、復制粘貼文件遺漏。
2、下載不完整無法,進行解壓。
3、磁碟空間不足。
4、解壓縮7z本身出現bug。
解決辦法:
1、重新下載要解壓的內容。
2、重新下載加壓縮7z。
3、如果都不行,還可以試試其他解壓啊軟體。

Ⅲ lol亞索bug怎麼卡的,只是想知道

在泉水裡一直q對面收到你q的傷害,多玩盒子裡面有這個視頻,你要是想看,可以去找找

Ⅳ 解壓縮7Z文件出現錯誤

出錯原因:
1、復制粘貼文件遺漏。
2、下載不完整無法,進行解壓。
3、磁碟空間不足。
4、解壓縮7z本身出現BUG。
解決辦法:
1、重新下載要解壓的內容。
2、重新下載加壓縮7z。
3、如果都不行,還可以試試其他解壓啊軟體。

Ⅳ 壓縮出什麼bug了

「由於游戲中出現的一個Bug會導致Yasuo使用Last Breath(國服譯名:狂風絕息斬)技能後會將敵方英雄無限定身,我們決定在我們修復這一Bug之前暫時讓Yasuo下線,對大家造成的不便深表歉意。」
在《英雄聯盟》中,Last Breath是Yasuo的大招,能夠對一個被擊飛的敵方英雄沖去,造成200/300/400(+1.5)物理傷害,並使范圍內的所有被擊飛的敵人在空中多停留1秒。同時重置斷鋼閃的旋風烈斬(Flow)層數。
目前,Riot還沒有確認Yasuo重新上線的時間

Ⅵ 用WINRAR解壓大的文件怎麼卡住了

親,出現此問題
大部分原因是電腦內存較小
或壓縮出現老版本出現的一個BUG.建議
安裝最新版的WINRAR後試試
並適當增加下內存。

Ⅶ 在壓縮包裡面打開的文件進行修改保存以後文件沒有了

摘要 如果是直接雙擊打開了zip文件裡面的文檔,然後編輯,再直接保存,那實際上是保存到了臨時文件,在關閉文件後,壓縮軟體會提醒是否要更新壓縮文件,如果選擇不更新,那這個修改後的臨時文件就被丟棄,壓縮包也不更新,更改就都沒有了。

Ⅷ 壓縮文件打開就會閃屏

這可能是由於你的系統出現問題。。或者是你的電腦中了病毒。解決方法,一般來說你可以裝一個正版的殺毒軟體。或者試著卸載掉你的壓縮工具。重新在網站上找一個比較穩定的壓縮工具。如果這都不行。那就試著讓自己的電腦重新煥發光彩。重裝一次。如果你的是品牌電腦。把自己的電腦安裝好系統過後,裝上基本的裝機軟體。做一個備份。(參考:一般的品牌電腦都有一鍵恢復。裝好一鍵恢復過後就能做備份了。清華同方熱鍵為CTRL+/。聯想為F2。)如果是組裝的就直接做一個GHOST備份。

Ⅸ 壓縮文件winrar的bug

這個問題,應該是臨時文件夾中有相同的文件。一般是在C:\Windows\Temp目錄下。你可以查看一下。

熱點內容
電腦版地平線四怎麼連上伺服器 發布:2024-11-14 23:46:42 瀏覽:471
ios怎麼變安卓 發布:2024-11-14 23:46:36 瀏覽:332
win7共享xp列印機拒絕訪問 發布:2024-11-14 23:45:29 瀏覽:749
引起資源配置失效的原因有哪些 發布:2024-11-14 23:35:22 瀏覽:14
c語言打字 發布:2024-11-14 23:11:06 瀏覽:892
存儲程序和程序控制的原理 發布:2024-11-14 22:53:23 瀏覽:322
python讀取json數據 發布:2024-11-14 22:51:52 瀏覽:931
釘線畫演算法 發布:2024-11-14 22:24:59 瀏覽:47
應用一直獲取配置失敗是怎麼回事 發布:2024-11-14 22:24:12 瀏覽:148
安卓如何收到信息開閃光 發布:2024-11-14 22:15:56 瀏覽:330