using System.IO; using System.Text; namespace SabreTools.FileTypes.Aaru { /// /// Checksum block, contains a checksum of all user data sectors /// (except for optical discs that is 2352 bytes raw sector if available /// /// public class ChecksumHeader { /// Identifier, public AaruBlockType identifier; /// Length in bytes of the block public uint length; /// How many checksums follow public byte entries; /// /// Read a stream as an ChecksumHeader /// /// ChecksumHeader as a stream /// Populated ChecksumHeader, null on failure public static ChecksumHeader Deserialize(Stream stream) { ChecksumHeader checksumHeader = new ChecksumHeader(); #if NET20 || NET35 || NET40 using (var br = new BinaryReader(stream, Encoding.Default)) #else using (var br = new BinaryReader(stream, Encoding.Default, true)) #endif { checksumHeader.identifier = (AaruBlockType)br.ReadUInt32(); checksumHeader.length = br.ReadUInt32(); checksumHeader.entries = br.ReadByte(); } return checksumHeader; } } }