public void CalculatesCorrectChecksum() { var data = new byte[] { 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0 }; var checksum = Adler32Checksum.Calculate(data); Assert.Equal(268304895, checksum); }
public void CalculatesCorrectChecksumWithLengthArgument() { var data = new byte[] { 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 44, 12, 126, 200 }; var checksum = Adler32Checksum.Calculate(data, 14); Assert.Equal(268304895, checksum); }
public byte[] Encode(Stream input, DictionaryToken streamDictionary, int index) { const int headerLength = 2; const int checksumLength = 4; byte[] data; using (var temp = new MemoryStream()) { input.CopyTo(temp); data = temp.ToArray(); } using (var compressStream = new MemoryStream()) using (var compressor = new DeflateStream(compressStream, CompressionLevel.Fastest)) { compressor.Write(data, 0, data.Length); compressor.Close(); var compressed = compressStream.ToArray(); var result = new byte[headerLength + compressed.Length + checksumLength]; // Write the ZLib header. result[0] = Deflate32KbWindow; result[1] = ChecksumBits; // Write the compressed data. Array.Copy(compressed, 0, result, headerLength, compressed.Length); // Write Checksum of raw data. var checksum = Adler32Checksum.Calculate(data); var offset = headerLength + compressed.Length; result[offset++] = (byte)(checksum >> 24); result[offset++] = (byte)(checksum >> 16); result[offset++] = (byte)(checksum >> 8); result[offset] = (byte)(checksum >> 0); return(result); } }