コード例 #1
0
 public static void CheckedExpect(this Stream stream, byte byte1, byte byte2, string errorMessageState)
 {
     short b1 = stream.CheckedReadByte(errorMessageState);
     byte b2 = stream.CheckedReadByte(errorMessageState);
     if (b1 != byte1 || b2 != byte2)
         throw new BadImageFormatException("Incorrect data when " + errorMessageState + ".");
 }
コード例 #2
0
 public static void CheckedExpect(this Stream stream, byte value, string errorMessageState)
 {
     byte b = stream.CheckedReadByte(errorMessageState);
     if (b != value)
         throw new BadImageFormatException(
             "Incorrect byte "+DiagnosticByteValue(b)+
             " instead of expected "+DiagnosticByteValue(value)+
             " when "+errorMessageState+".");
 }
コード例 #3
0
        public static void CheckedSkipBytes(this Stream stream, long byteCount, string eofErrorMessageState)
        {
            if (stream.CanSeek)
            {
                stream.Seek(byteCount, SeekOrigin.Current);
                return;
            }

            for (int i = 0; i < byteCount; i++)
            {
                stream.CheckedReadByte(eofErrorMessageState);
            }
        }
コード例 #4
0
        public static long CheckedReadInt64(this Stream stream, string eofErrorMessageState)
        {
            byte b0 = stream.CheckedReadByte(eofErrorMessageState);
            byte b1 = stream.CheckedReadByte(eofErrorMessageState);
            byte b2 = stream.CheckedReadByte(eofErrorMessageState);
            byte b3 = stream.CheckedReadByte(eofErrorMessageState);
            byte b4 = stream.CheckedReadByte(eofErrorMessageState);
            byte b5 = stream.CheckedReadByte(eofErrorMessageState);
            byte b6 = stream.CheckedReadByte(eofErrorMessageState);
            byte b7 = stream.CheckedReadByte(eofErrorMessageState);

            unchecked
            {
                return
                    (long)b0 |
                    ((long)b1 << 8) |
                    ((long)b2 << 16) |
                    ((long)b3 << 24) |
                    ((long)b4 << 32) |
                    ((long)b5 << 40) |
                    ((long)b6 << 48) |
                    ((long)b7 << 56);
            }
        }
コード例 #5
0
        public static string CheckedReadFixedString(this Stream stream, int characterCount, string eofErrorMessageState)
        {
            char[] result = new char[characterCount];
            int size = 0;
            for (int i = 0; i < result.Length; i++)
            {
                char readChar = result[i] = (char)stream.CheckedReadByte(eofErrorMessageState);

                if (readChar != (char)0)
                    size = i + 1;
            }

            return size == 0 ? string.Empty : new string(result, 0, size);
        }
コード例 #6
0
        public static int CheckedReadInt32(this Stream stream, string eofErrorMessageState)
        {
            byte b0 = stream.CheckedReadByte(eofErrorMessageState);
            byte b1 = stream.CheckedReadByte(eofErrorMessageState);
            byte b2 = stream.CheckedReadByte(eofErrorMessageState);
            byte b3 = stream.CheckedReadByte(eofErrorMessageState);

            unchecked
            {
                return
                    b0 |
                    (b1 << 8) |
                    (b2 << 16) |
                    (b3 << 24);
            }
        }
コード例 #7
0
        public static short CheckedReadInt16(this Stream stream, string eofErrorMessageState)
        {
            byte b0 = stream.CheckedReadByte(eofErrorMessageState);
            byte b1 = stream.CheckedReadByte(eofErrorMessageState);

            unchecked
            {
                return (short)(b0 | (b1 << 8));
            }            
        }