Fråga : Hur till kompressen en stränga in i en kort framställning i ASP.NET using C# eller VB.NET?

Vi har en behovskompress en stränga in i en framställning, som är kortare, än original stränger därefter för att decompress det.  Jag önskade att veta, om det finns a långt som gör detta i .NET för, stränger som är omkring 200-500 tecken (inte extremt long, bara vi behöver kompressen dem för bruk i en URL/querystring). " klar "

Svar : Hur till kompressen en stränga in i en kort framställning i ASP.NET using C# eller VB.NET?

Därför att dessa kompressionsmetoder resulterar i binära data, och du inte kan passera byte i en URL, de komprimerade datan behöver att kodas som en Base64 stränger. Fördriva kompressionsstyrkan förminskar storleksanpassa av stränga, mig misstänker kodningen Base64 är rimligt att få dig en stränga större, än den dig var pröva till kompressen i första förlägger - om bestämt ditt stränga är i hög grad slumpmässigt.

Lilla datamängder, e.g. en byte 500 stränger, ansar till inte brunnen och ofta, resultatet för kompress i en förhöjning storleksanpassar in.

Vad innehålls i ditt stränger?

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
using system;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication1
{
	klassificera programet
	{
		utan laga kraft huvudsakligt för statisk elektricitet (stränga [] args),
		{
			stränga longString = GetLongString (500);
			
			stränga komprimerat = StringCompressor.CompressString (longString);
			stränga uncompressed = (komprimerad) StringCompressor.DecompressString;

			Console.WriteLine (”original stränger längd: \ r \ nCompressed stränga längden: {0} {1}”,
				longString.Length som är komprimerad. Längd);
			Console.ReadKey ();
		}

		statisk elektricitet stränger GetLongString (int len),
		{
			StringBuilder str = nya StringBuilder ();
			Slumpmässig rand = nytt slumpmässigt (DateTime.Now.Millisecond);

			för (int i = 0; streamBytes < len=""> i = nytt listar ();

			om (stream.CanSeek)
				strömma. Placera = 0;

			int-bytesRead = 0;
			gör
			{
				bytesRead = strömmer. Läst (fungera som buffert, 0, buffer_size);
				om (bytesRead > 0)
					streamBytes.AddRange (fungera som buffert. Take (bytesRead));
			} stunder (bytesRead > 0);

			återgång streamBytes.ToArray ();
		}
	}
}
Andra lösningar  
 
programming4us programming4us