using System.Collections.Generic;
using System.IO.Compression;
namespace CSharpTutorials
static void Main(string[] args) {
var varbinaryStr = "0x1F8B0800000000000400A556796FD44614FF2AC852D56BBD3B638FAF55919A84A3D0E6206C0A2D46DBB13DCE3AECDACBDA9B6489B62C82822A85865284A87A252110F548B94438428B34A3F41FBEC57E92CED82609B4F9A3EA4AF6CEBCF77EBF79F3DE9B379E9362127A873CA92C793EF60CCDB4640F614D46AE69CA96091D99988EE52007001360A920B5C8E936899314E25A9EA5630BC8AEEB7832521D5D361D13C93ED491A39A06B21C974348C08D3505010010D00B52E3B5B91B85090913A93C2735481CE3C9209CAC365B91D776B9503A56C3493CD06C72A624E2730B5A96669A48D5812A649D26E1D284349A759C102EC94848B54112ECE10473ED9C2DB9892D956DA965DB6D00A0F779BF77973D628FFABD1BA904F8C7E9CAC4E69241D7E8F3CCC6257F5DCD467EBFF70DBBCFCEB335BAFAFE3EB6429FB19FE8EAD470A6051901625FF47B4B6CEDC545361F4523994E650BFDDE53F6982BE9CA69FAE7C76CF90D76E11DB64E57E99D902DB24B749DDD85ECF28BEF6DBBB5B934CECE676C906EB0AF320E4217A6D833FAFC6D7A2ED7CDB05BEC42A6C4EC225B6037D8069BA77FB08DA4DFFB363AC01EDAB6C3566C3B64DFD9FC47EFB1C76C997D395BA30FFABD65FA3B7DCEAEB07B4364969B40FEB8470F6E2E4EF67B3FE27EEF5AB6883ECD2EBD25C0FDDE0FECAA6BE491A0EBF4976022DF38BD72F6C81E7A8BCD5707D8ED0E7D7298DE39D6620FDECC193A3C4A6BB5CCD661B7D96F9CAAB1B94897F6F0C9B3C6D9CF2A74BDC363798D5E619722AE1C630F27DE634BECEEE622FB3AC36974F1DDB38DE325766E2813987C23D76DA9604BC1749A51BA30D6EF3D61B7E812F73FB3315AEC299791813C333C28ECC9680AAAE1B896C2A298FECA36A64E807C1D1EBF9FD93C4F424E412FD3659E839B79BD70BAA3ECFA1976933EA4F787105DC519B726B2E4A7D41E39C5999158A4815D31EC8AFA7C5998BCBC43DCD859ABD59920A955DD04579D76924421B7AEE370B2CD8B5758BB9127ACC72AD5C171A92BCE49A31985FCA4C452F9C4DCCBC2AF11EC91168736718BD327A4F58A3A6808B642FECF59EB41784AC092A419974BA5545E8CD5E269AC1663BFE1CAF9712CF2E54AF5C029F944C5101A8AC14F3540866740880CBDD428C192AF61053A26941580A18C341DC896E3B8B2EF1043D52041BEAF16A79A6452EA764F760B5B4E6D6DF7DF7D4EC86C92466E569CFF69DC92BA270B52DC76AAB9C1C4F847624BA14766F90C727597C747B4B24A3414B5452F8105692A72D23685159FE82E6F6AD053786733154BB67CCD9091E7124FD15D0320D148785F6B934A906648018A2A035D56F40AD0CA482D4358B4746EE4D671D0D8D5482D6A06D4A4DC95DDAD4CCD507553E3E232005296D93A0FC3AE1054D415DEF110DA82B448CC8B212643699128006C8BC670A71E61B1739B373EDBFE675715C2B278CD88DE8A9B4D312E8897483E769338B53891A283B0D9DE46ECECBE5BA8195C0DBC5D4D78F2B6BD20AF506F836630BF168A1F0C4E0E8F56F66BA3950934BAEFC89991A98133078E1C1AD83F3E797464AA7E70B832C89FE1CE70E513657CFFA707872746F60D0CECDD9B2DD3B5251E99A8110663519C0CF3C8D42B69C14075EB56F890747860FEDF6AA2F6E2A11A0E43BE400B87318F581085385F2D69B5494112B2E920E9A425E8ABBCD688E6C9AE86B18C900A656C4143C68A835D1D7A268490B37AC40FC24070A528E25896A16155360C439511503DD901962F23DDD315DF05AEA99AA27A324F520854A16158263054655B93B9B5F322CDD32C208A6E688AA9888B388EDA2D57581EE683907406DB413DEB2D99E6BF6C05C73149F9A1A99BD040B92477A5B27D5BE73EF22F822DB7B21CED2CA3EA383E45E29AE06D36EB818BB7620481A61808689AA119C01447147B1E3F09F1EB5F0ADDBF0138FD9277EC080000";
var varbinaryStrTrimmed = varbinaryStr.Replace("0x", "").Trim();
byte[] bytes = StrToByteArray(varbinaryStrTrimmed);
var json = DecompressZippedBytes(bytes);
static byte[] StrToByteArray(string str)
Dictionary<string, byte> hexindex = new Dictionary<string, byte>();
for (int i = 0; i <= 255; i++)
hexindex.Add(i.ToString("X2"), (byte)i);
List<byte> hexres = new List<byte>();
for (int i = 0; i < str.Length; i += 2)
hexres.Add(hexindex[str.Substring(i, 2)]);
static byte[] CompressToZippedBytes( string payload)
var bytes = Encoding.UTF8.GetBytes(payload ?? "");
using (var compressedStream = new MemoryStream())
using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress))
zipStream.Write(bytes, 0, bytes.Length);
return compressedStream.ToArray();
static string DecompressZippedBytes( byte[] bytes)
using (var compressedStream = new MemoryStream(bytes))
using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
using (var resultStream = new MemoryStream())
zipStream.CopyTo(resultStream);
return Encoding.UTF8.GetString(resultStream.ToArray());