海蘭傢伙,所以以後你幫我正確地轉換「壓縮」功能,我tryed轉換的解壓功能太gZipBuffer減壓轉換爲F#
現在我在這裏 (由我解壓縮功能)
let DecompressString (detext : string) =
let buffer = Convert.FromBase64String detext
using (new MemoryStream()) <| fun memoryStream ->
using (new GZipStream(memoryStream, CompressionMode.Decompress, true)) <| fun gzipStream ->
memoryStream.Position <- 0L
memoryStream.Read(buffer, 0, Array.length buffer)
Encoding.UTF8.GetString(buffer)
原來Compressfunction是
let compressString (text : string) =
let buffer = Encoding.UTF8.GetBytes text
using (new MemoryStream()) <| fun memoryStream ->
using (new GZipStream(memoryStream, CompressionMode.Compress, true)) <| fun gzipStream ->
gzipStream.Write (buffer, 0, Array.length buffer)
memoryStream.Position <- 0L
let compressedData = Array.zeroCreate (int memoryStream.Length)
memoryStream.Read (compressedData, 0, compressedData.Length)
let gzipBuffer = Array.zeroCreate (compressedData.Length + 4)
Buffer.BlockCopy (compressedData, 0, gzipBuffer, 4, compressedData.Length)
Buffer.BlockCopy (BitConverter.GetBytes buffer.Length, 0, gzipBuffer, 0, 4)
Convert.ToBase64String gzipBuffer
如果我壓縮這樣
字符串File.WriteAllText("test",compressString("bla"))
(我保存在這個文件名爲「test」的文件是從「喇嘛」壓縮串)
「AwAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyImZfb/ADmz70cDAAAA
」 <似乎對我來說更大然後過嗎? :d
確定現在我試着像一次解壓:
File.WriteAllText("test2",DecompressString(File.ReadAllText("test")))
,但在新的 「test2的」 文件僅僅是不可讀的文本,如:
「?"&e�ï¿
」
,所以我認爲我的dcompress功能不能正常工作。
也許你的我的英雄能幫助我第二次也是最後一次? :) 無論如何在此先感謝
嗯,如果我看到它壓縮功能只返回一個base64字符串? ,所以我只能使用'Convert.ToBase64String',我只是想要一個「真正的」字符串壓縮... – galeda