基於Zlib演算法的流壓縮 字串壓縮原始碼

2021-05-22 15:52:13 字數 2231 閱讀 1043

基於zlib演算法的流壓縮、字串壓縮原始碼

zlib.net官方原始碼demo中提供了壓縮檔案的原始碼演算法。處於專案研發的需要,我需要對記憶體流進行壓縮,由於zlib.net並無相關文字幫助只能自己看原始碼解決。通過對sharpziplib的demo研究,寫出了zlib.net的流壓縮演算法。

中間花費了不少的時間,應為通過stream壓縮出來的資料全是空的,呵呵,主要原因就是忽略了zoutputstream.flush()和zoutputstream.close()方法。大家自己看吧。關於字串壓縮,自然是把字串塞到memorystream中就可以了:)

其中zlib.net從http://www.componentace.com

現貼原始碼如下:

現貼原始碼如下:

using system;

using system.collections.generic;

using system.text;

using system.xml;

using system.data;

using system.io;

using system.runtime.serialization.formatters.binary;

using componentace.compression.libs.zlib;

namespace test.compress

...output.flush();

}/**

/// 壓縮檔案

///

/// 被壓縮檔案名(必須輸入絕對路徑)

/// 壓縮後儲存的檔名(必須輸入絕對路徑)

///

public static bool compressfile(string filename, string compressedfilename)

...catch

...finally

...return bresult;

}/**

/// 解壓檔案

///

/// 被解壓檔名(必須輸入絕對路徑)

/// 解壓後儲存的檔名(必須輸入絕對路徑)

///

public static bool decompressfile(string compressedfilename, string decompressfilename)

...catch

...finally

...return bresult;

}/**

/// 壓縮byte陣列資料

///

/// 需要被壓縮的byte陣列資料

///

public static byte compressbytes(byte sourcebyte)

...catch

...}

/**

/// 解壓byte資料資料

///

/// 需要被解壓的byte陣列資料

///

public static byte decompressbytes(byte sourcebyte)

...catch

...}

/**

/// 壓縮流

///

/// 需要被壓縮的流資料

///

public static stream compressstream(stream sourcestream)

...catch

...}

/**

/// 解壓流

///

/// 需要被解縮的流資料

///

public static stream decompressstream(stream sourcestream)

...catch

...}

/**

/// 壓縮字串

///

/// 需要被壓縮的字串

///

public static string compressstring(string sourcestring)

...else

...}

/**

/// 解壓字串

///

/// 需要被解壓的字串

///

public static string decompressstring(string sourcestring)

...else

...}}}

字串壓縮演算法

最近我研究出來一種對字串壓縮的演算法,雖然還有一定的缺陷。就是如果字串中的字母過多的話,壓縮效率會大大降低。這個演算法主要是為壓縮數字設計的。現在把原始碼共享出來,希望大家多提意見。using system namespace new919.encrypt private static string...

演算法 字串壓縮

今天做了一道字串壓縮的演算法題,原題的輸入字串長度都固定了,突然想到如果輸入不固定,也就是不知道要輸入的字串長度的話,那應該怎麼做呢?c 中stl裡的vector是個不錯的選擇。通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字...

字串壓縮演算法

時間限制 1秒 空間限制 32768k12 34輸入一串字元,請編寫乙個字串壓縮程式,將字串中連續出現的重複字母進行壓縮,並輸出壓縮後的字串。例如 aac 壓縮為 1ac xyyyyyyzbbb 壓縮為 3x5yz2b 輸入描述 任意長度字串 輸出描述 壓縮後的字串 輸入例子1 xyyyyyyzbb...