패딩 문자 사이의 공백 문자. "오류 "를 입력 유효한 자료-64 문자열</p> <p>압축 해제 동안 오류가없는
잘 압축되지만 압축을 해제하지 않습니다. 나는 같은 문제가있는 많은 다른 예제를 살펴 봤는데, 내가 말한 것을 따르면서도 감압 할 때 아무것도 얻지 못한다고 느낀다. ;
public static string CompressData(string data)
{
byte[] bffr = Encoding.UTF8.GetBytes(data);
var mStream = new MemoryStream();
using (var gZipStream = new GZipStream(mStream, CompressionMode.Compress, true))
{
gZipStream.Write(bffr, 0, bffr.Length);
}
mStream.Position = 0;
var compressedData = new byte[mStream.Length];
mStream.Read(compressedData, 0, compressedData.Length);
var gZipBuffer = new byte[compressedData.Length + 4];
Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length);
Buffer.BlockCopy(BitConverter.GetBytes(bffer.Length), 0, gZipBuffer, 0, 4);
return Convert.ToBase64String(gZipBuffer);
}
public static string DecompressData(string compressedData)
{
byte[] gZipBffr = Convert.FromBase64String(compressedData);
using (var mStream = new MemoryStream())
{
int dataLength = BitConverter.ToInt32(gZipBffr , 0);
mStream.Write(gZipBffr , 4, gZipBffr .Length - 4);
var buffer = new byte[dataLength];
mStream.Position = 0;
using (var gZipStream = new GZipStream(mStream, CompressionMode.Decompress))
{
gZipStream.Read(buffer, 0, buffer.Length);
}
return Encoding.UTF8.GetString(buffer);
}
}
string s = CompressData(s2.Tostring());
S2는 타입
XElement를 문자열을 pH DecompressData (stream2)) 다음은 압축 및 압축 해제 방법의 여기서 stream2는 유형 문자열입니다. 데이터베이스에서 nvarchar 유형 열 에 저장되며 압축하는 동안 루트 태그가 제거됩니다. 우리가 압축하면서 XML 매번 여기에 다른 학생 데이터가 기존 XML에 추가됩니다 다음 번에 피트 2012년 3월 24일 퍼센트 33.3 처럼 처음
상위 태그를 제거합니다. 이 작은 크기 잘 될 것입니다하지만, 데이터가 하나 개 이상의 학생 데이터를 얻을 때 당신은 충분한 공간을 할당하지 않기 때문에이 실패합니다 생각 -
<student>
<data>
<name>peet</name>
<date>3/24/2012</date>
<field>Percent</field>
<new>33.3</new>
<old>10</old>
</data>
<data>
<name>raaz</name>
<date>3/24/2011</date>
<field></field>
<new>33.3</new>
<old>10</old>
</data>
<data>
<name>arya</name>
<date>3/24/2010</date>
<field></field>
<new>33.3</new>
<old>10</old>
</data>
</student>
커플 : 1 : (학자 인, 죄송합니다) - 당신이 여기에 오타가'Buffer.BlockCopy (BitConverter.GetBytes (bffer.Length), 0, gZipBuffer, 0, 4) ;''Buffer.BlockCopy (BitConverter.GetBytes (gZipBuffer.Length), 0, gZipBuffer, 0, 4); '라고 생각합니다. 2 : 당신이 압축하기 위해 전달하는 것은 무엇입니까? - 방금 당신의 메소드를 가져 와서이 Console.WriteLine (DecompressData (CompressData ("Hello"))))''을 실행하면 Hello가 오류없이 잘 인쇄됩니다. – kmp
여기 압축 및 xml 데이터 압축을 풀고, 미래에 하나 더 먼저 데이터를 추가하기 전에 더 많은 데이터를 추가하기 전에 XML에 압축을 풀고 새 데이터를 다시 압축합니다. 첫 번째 2 변경 사항은 잘 작동하지만 세 번째로 추가 할 때 time decompressing fail fails – GANI
XML 매개 변수가있는 호출을 질문에 추가 할 수 있습니까? – kmp