System.util.zlib.Adler32.adler32 C# (CSharp) Method

adler32() private method

private adler32 ( long adler, byte buf, int index, int len ) : long
adler long
buf byte
index int
len int
return long
        internal long adler32(long adler, byte[] buf, int index, int len){
            if(buf == null){ return 1L; }

            long s1=adler&0xffff;
            long s2=(adler>>16)&0xffff;
            int k;

            while(len > 0) {
                k=len<NMAX?len:NMAX;
                len-=k;
                while(k>=16){
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    s1+=buf[index++]&0xff; s2+=s1;
                    k-=16;
                }
                if(k!=0){
                    do{
                        s1+=buf[index++]&0xff; s2+=s1;
                    }
                    while(--k!=0);
                }
                s1%=BASE;
                s2%=BASE;
            }
            return (s2<<16)|s1;
        }

Usage Example

Esempio n. 1
0
        // Read a new buffer from the current input stream, update the adler32
        // and total number of bytes read.  All deflate() input goes through
        // this function so some applications may wish to modify it to avoid
        // allocating a large strm->next_in buffer and copying from it.
        // (See also flush_pending()).
        internal int read_buf(byte[] buf, int start, int size)
        {
            int len = avail_in;

            if (len > size)
            {
                len = size;
            }
            if (len == 0)
            {
                return(0);
            }

            avail_in -= len;

            if (dstate.noheader == 0)
            {
                adler = _adler.adler32(adler, next_in, next_in_index, len);
            }
            System.Array.Copy(next_in, next_in_index, buf, start, len);
            next_in_index += len;
            total_in      += len;
            return(len);
        }
Adler32