static void Main(string[] args) { while (true) { BasE91 b = new BasE91(); Random r = new Random(); byte[] data = new byte[r.Next(1024 * 1024, 20 * 1024 * 1024)]; r.NextBytes(data); DateTime begin = DateTime.UtcNow; StringBuilder enc = b.Encode(data); DateTime end = DateTime.UtcNow; System.Console.WriteLine("Encode {0}: {1}mb in {2}ms. {3}mb/sec. +{4}%", enc.ToString(0, 10), data.Length / (1024 * 1024), (int)(end - begin).TotalMilliseconds, Math.Round((data.Length / (end - begin).TotalSeconds) / (1024 * 1024), 1), ((long)enc.Length * 100) / data.Length - 100); b = new BasE91(); string encoded = enc.ToString(); begin = DateTime.UtcNow; b.Decode(encoded); end = DateTime.UtcNow; System.Console.WriteLine("Decode: {0}mb in {1}ms. {2}mb/sec", enc.Length / (1024 * 1024), (int)(end - begin).TotalMilliseconds, Math.Round((enc.Length / (end - begin).TotalSeconds) / (1024 * 1024), 1)); } }
public void Roundtrip_Byte() { for (byte i = 1; i < byte.MaxValue; i++) { byte[] raw = new byte[] { i }; string enc = new BasE91().Encode(raw).ToString(); byte dec = new BasE91().Decode(enc).First(); Assert.Equal(raw[0], dec); } }
public void Roundtrip_ushort() { for (ushort i = 1; i < ushort.MaxValue; i++) { byte[] raw = BitConverter.GetBytes(i); string enc = new BasE91().Encode(raw).ToString(); List <byte> dec = new BasE91().Decode(enc); Assert.Equal(raw[0], dec[0]); Assert.Equal(raw[1], dec[1]); } }
public void Large_Array() { byte[] data = new byte[20 * 1024 * 1024]; new Random().NextBytes(data); var builder = new BasE91().Encode(data); List <byte> newData = new BasE91().Decode(builder.ToString()); for (int i = 0; i < data.Length; i++) { Assert.Equal(data[i], newData[i]); } }