All pastes #89691 Raw Edit

Unnamed

public python v1 · immutable
#89691 ·published 2006-07-16 21:38 UTC
rendered paste body
# trying to take the c function at the bottom, and replicate it# this.p contains an int vector of items to be processed# the shortest function has the virtue that it at least returns# valid sizes keeping the program from crashing as long as all values# are positive but the results are totally wrong    def __getuint(this):        n = this.p[0]        size = 1        if n & 0x80:            n = n + (this.p[1] << 7) - 0x80;            size = size + 1            if n & (1<<14):                n = n + (this.p[size] << 14) - (1<<14)                size = size + 1            if n & (1<<21):                n = n + (this.p[size] << 21) - (1<<21)                size = size + 1            if n & (1<<28): n = n | 0xF0000000        return n, size;        #for i in range(3):        #    n = this.p[i];        #    if(not(n & 0x80)):        #        n = n + (this.p[i] << (7 * i))        #        return n,i+1        #if n & 0x80:            #n = n + (this.p[1] << 7) - 0x80            #if(n & (1<<14)):            #    size = 2            #    n = n + (this.p[size-1] << 14) - (1<<14)            #if(n & (1<<21)):            #    size = 3            #    n = n + (this.p[size-1] << 21) - (1<<21)            #if(n & (1<<28)):            #    n |= 0xF0000000        #return n,1# START C function we are trying to replace#int getuint(uchar *&p)#{#    int n = *p++;#    if(n & 0x80)#    {#        n += (*p++ << 7) - 0x80;#        if(n & (1<<14)) n += (*p++ << 14) - (1<<14);#        if(n & (1<<21)) n += (*p++ << 21) - (1<<21);#        if(n & (1<<28)) n |= 0xF0000000;#    };#    return n;#};