コード例 #1
0
ファイル: RarHeader.cs プロジェクト: liyifei21/sharpcompress
 private void ReadStartFromReader(RarCrcBinaryReader reader)
 {
     HeadCRC = reader.ReadUInt16();
     reader.ResetCrc();
     HeaderType = (HeaderType)(reader.ReadByte() & 0xff);
     Flags      = reader.ReadInt16();
     HeaderSize = reader.ReadInt16();
     if (FlagUtility.HasFlag(Flags, LONG_BLOCK))
     {
         AdditionalSize = reader.ReadUInt32();
     }
 }
コード例 #2
0
ファイル: RarHeader.cs プロジェクト: zhouzu/sharpcompress
        private RarHeader(RarCrcBinaryReader reader, bool isRar5, ArchiveEncoding archiveEncoding)
        {
            _headerType     = HeaderType.Null;
            _isRar5         = isRar5;
            ArchiveEncoding = archiveEncoding;
            if (IsRar5)
            {
                HeaderCrc = reader.ReadUInt32();
                reader.ResetCrc();
                HeaderSize = (int)reader.ReadRarVIntUInt32(3);
                reader.Mark();
                HeaderCode  = reader.ReadRarVIntByte();
                HeaderFlags = reader.ReadRarVIntUInt16(2);

                if (HasHeaderFlag(HeaderFlagsV5.HAS_EXTRA))
                {
                    ExtraSize = reader.ReadRarVIntUInt32();
                }
                if (HasHeaderFlag(HeaderFlagsV5.HAS_DATA))
                {
                    AdditionalDataSize = (long)reader.ReadRarVInt();
                }
            }
            else
            {
                reader.Mark();
                HeaderCrc = reader.ReadUInt16();
                reader.ResetCrc();
                HeaderCode  = reader.ReadByte();
                HeaderFlags = reader.ReadUInt16();
                HeaderSize  = reader.ReadInt16();
                if (HasHeaderFlag(HeaderFlagsV4.HAS_DATA))
                {
                    AdditionalDataSize = reader.ReadUInt32();
                }
            }
        }