基於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...