Чтобы узнать «размер» (в КБ) строки, нам нужно знать кодировку. Если мы предположим UTF8, то это (не включая спецификацию и т. Д.), Как показано ниже (но поменяйте местами кодировку, если это не UTF8):
int len = Encoding.UTF8.GetByteCount(longString);
переупаковка; Я бы предложил GZIP через UTF8, за которым может следовать base-64, если это должна быть строка:
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true))
{
byte[] raw = Encoding.UTF8.GetBytes(longString);
gzip.Write(raw, 0, raw.Length);
gzip.Close();
}
byte[] zipped = ms.ToArray(); // as a BLOB
string base64 = Convert.ToBase64String(zipped); // as a string
// store zipped or base64
}