我努力學習F#和在這個時候我嘗試一個簡單的C#功能,以F# 轉換在某些方面我被困在例如var compressedData = new byte[memoryStream.Length];
< C# 這裏的完整的C#功能gZipBuffer壓縮從C#轉換爲F#
public static string CompressString(string text)
{
byte[] buffer = Encoding.UTF8.GetBytes(text);
var memoryStream = new MemoryStream();
using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
{
gZipStream.Write(buffer, 0, buffer.Length);
}
memoryStream.Position = 0;
var compressedData = new byte[memoryStream.Length];
memoryStream.Read(compressedData, 0, compressedData.Length);
var gZipBuffer = new byte[compressedData.Length + 4];
Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length);
Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4);
return Convert.ToBase64String(gZipBuffer);
}
這裏煤礦一半譯本
let compress(text:string)=
let buffer = Encoding.UTF8.GetBytes(text)
use memoryStream = new MemoryStream()
let gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true)
gZipStream.Write(buffer, 0, buffer.Length)
memoryStream.Position <- Convert.ToInt64(0)
let compressedData = Array.init memoryStream.Length(fun i -> byte) //< Here i stuck
memoryStream.Read(compressedData, 0, compressedData.Length)
use gZipBuffer = (compressedData.Length + 4)
最後三天我已經搜索在谷歌解決我的問題,但我沒有找到任何解決方案。 我希望這裏有人能幫助我:) 非常感謝您提前
海蘭感謝您的幫助,但是這也不要讓工作= compressedData Array.zeroCreate memoryStream.Length // <這裏新的錯誤**這種表達應該有以下類型:int 不過,他的類型:int64 – galeda
使用'int'函數。我更新了我的示例來演示。 – Daniel
是的你現在沒有錯誤,非常感謝你的幫助:),如果我可以我也會幫助在stackoverflow,現在嘗試轉換「解壓縮」功能,但這應該現在不是一個大問題; ) – galeda