2
我有一個VB.NET應用程序,它生成一個需要發佈到Web應用程序的XML文檔。在發佈XML之前,我需要壓縮XML和base64對其進行編碼。在下面,我有一個代碼片段,我使用一個XML字符串,使用gzip進行壓縮,然後使用base64編碼。爲了確保我所做的是正確的,我正在解碼base64,然後解壓gzip。解壓縮後,原始XML比我測試的XML長2個字節。我正在放棄最後2個字節。他們去了哪裏?壓縮並編碼掉最後兩個字節的字符串
Dim xml As String = ds.ToXMLString()
' compress and encode
Dim ceb() As Byte = System.Text.Encoding.UTF8.GetBytes(xml)
Dim cems As New System.IO.MemoryStream()
Dim cegz As New System.IO.Compression.GZipStream(cems, IO.Compression.CompressionMode.Compress)
cegz.Write(ceb, 0, ceb.Length)
Dim cees As String = System.Convert.ToBase64String(cems.ToArray())
' i want to make sure everything is working,
' decode and decompress and make sure it matches
Dim ddb() As Byte = System.Convert.FromBase64String(cees)
Dim ddms As New System.IO.MemoryStream(ddb)
Dim ddgz As New System.IO.Compression.GZipStream(ddms, IO.Compression.CompressionMode.Decompress)
Dim ddms2 As New System.IO.MemoryStream()
ddgz.CopyTo(ddms2)
Dim xmlRestored As String = System.Text.Encoding.UTF8.GetString(ddms2.ToArray())
Assert.AreEqual(xml.Substring(0, xmlRestored.Length), xmlRestored) ' <-- SUCCESS
Assert.AreEqual(xml.Length, xmlRestored.Length) ' <-- FAILS; xml.length=147802; xmlRestored.length=147800;