public List <byte[]> Decode(Span <byte> encoded) { Span <byte> data = encoded.Slice(1, encoded.Length - 1); Span <byte> decompressed; if (encoded[0] == 0) { decompressed = data; } else if (encoded[0] == 1) { ZLibCompression zLibCompression = new ZLibCompression(); decompressed = zLibCompression.Decompress(data.ToArray()); } else { throw new MessageNotSupportedException("Compression type not supported."); } List <byte[]> shortIds = new List <byte[]>(); for (int i = 0; i < decompressed.Length; i = i + 8) { shortIds.Add(decompressed.Slice(i, 8).ToArray()); } return(shortIds); }
public byte[] Encode(List <byte[]> shortIdsToEncode, bool compress) { var data = ByteExtensions.Combine(shortIdsToEncode.ToArray()); if (compress) { ZLibCompression zLibCompression = new ZLibCompression(); var compressed = zLibCompression.Compress(data); return(ByteExtensions.Combine(new byte[] { 1 }, compressed)); } return(ByteExtensions.Combine(new byte[] { 0 }, data)); }