iTextSharp.text.pdf.codec.TIFFFaxDecoder.NextLesserThan8Bits C# (CSharp) 메소드

NextLesserThan8Bits() 개인적인 메소드

private NextLesserThan8Bits ( int bitsToGet ) : int
bitsToGet int
리턴 int
        private int NextLesserThan8Bits(int bitsToGet) {
            byte b, next;
            int l = data.Length - 1;
            int bp = this.bytePointer;
            
            if (fillOrder == 1) {
                b = data[bp];
                if (bp == l) {
                    next = 0x00;
                } else {
                    next = data[bp + 1];
                }
            } else if (fillOrder == 2) {
                b = flipTable[data[bp] & 0xff];
                if (bp == l) {
                    next = 0x00;
                } else {
                    next = flipTable[data[bp + 1] & 0xff];
                }
            } else {
                throw new Exception("TIFF_FILL_ORDER tag must be either 1 or 2.");
            }
            
            int bitsLeft = 8 - bitPointer;
            int bitsFromNextByte = bitsToGet - bitsLeft;
            
            int shift = bitsLeft - bitsToGet;
            int i1, i2;
            if (shift >= 0) {
                i1 = (b & table1[bitsLeft]) >> shift;
                bitPointer += bitsToGet;
                if (bitPointer == 8) {
                    bitPointer = 0;
                    bytePointer++;
                }
            } else {
                i1 = (b & table1[bitsLeft]) << (-shift);
                i2 = (next & table2[bitsFromNextByte]) >> (8 - bitsFromNextByte);
                
                i1 |= i2;
                bytePointer++;
                bitPointer = bitsFromNextByte;
            }
            
            return i1;
        }