research/brotlidump.py
def formatBitData(self, pos, width1, width2=0):
        """Show formatted bit data:
        Bytes are separated by commas
        whole bytes are displayed in hex
        >>> Layout(olleke).formatBitData(6, 2, 16)
        '|00h|2Eh,|00'
        >>> Layout(olleke).formatBitData(4, 1, 0)
        '1'
        """
        result = []
        #make empty prefix code explicit
        if width1==0: result = ['()', ',']
        for width in width1, width2:
            #skip empty width2
            if width==0: continue
            #build result backwards in a list
            while width>0:
                availableBits = 8-(pos&7)
                if width<availableBits:
                    #read partial byte, beginning nor ending at boundary
                    data = self.stream.data[pos>>3] >> (pos&7) & (1<<width)-1
                    result.append('{:0{}b}'.format(data, width))
                elif availableBits<8:
                    #read rest of byte, ending at boundary
                    data = self.stream.data[pos>>3] >> (pos&7)
                    result.append('|{:0{}b}'.format(data, availableBits))
                else:
                    #read whole byte (in hex), beginning and ending at boundary
                    data = self.stream.data[pos>>3]
                    result.append('|{:02X}h'.format(data))
                width -= availableBits
                pos += availableBits
            #if width overshot from the availableBits subtraction, fix it
            pos += width
            #add comma to separate fields
            result.append(',')
        #concatenate pieces, reversed, skipping the last space
        return ''.join(result[-2::-1])
def formatBitData(self, pos, width1, width2=0):
        """Show formatted bit data:
        Bytes are separated by commas
        whole bytes are displayed in hex
        >>> Layout(olleke).formatBitData(6, 2, 16)
        '|00h|2Eh,|00'
        >>> Layout(olleke).formatBitData(4, 1, 0)
        '1'
        """
        result = []
        #make empty prefix code explicit
        if width1==0: result = ['()', ',']
        for width in width1, width2:
            #skip empty width2
            if width==0: continue
            #build result backwards in a list
            while width>0:
                availableBits = 8-(pos&7)
                if width<availableBits:
                    #read partial byte, beginning nor ending at boundary
                    data = self.stream.data[pos>>3] >> (pos&7) & (1<<width)-1
                    result.append('{:0{}b}'.format(data, width))
                elif availableBits<8:
                    #read rest of byte, ending at boundary
                    data = self.stream.data[pos>>3] >> (pos&7)
                    result.append('|{:0{}b}'.format(data, availableBits))
                else:
                    #read whole byte (in hex), beginning and ending at boundary
                    data = self.stream.data[pos>>3]
                    result.append('|{:02X}h'.format(data))
                width -= availableBits
                pos += availableBits
            #if width overshot from the availableBits subtraction, fix it
            pos += width
            #add comma to separate fields
            result.append(',')
        #concatenate pieces, reversed, skipping the last space
        return ''.join(result[-2::-1])
def formatBitData ( self , pos , width1 , width2 = 0 ) : result = [ ] #make empty prefix code explicit if width1 == 0 : result = [ '()' , ',' ] for width in width1 , width2 : #skip empty width2 if width == 0 : continue #build result backwards in a list while width > 0 : availableBits = 8 - ( pos & 7 ) if width < availableBits : #read partial byte, beginning nor ending at boundary data = self . stream . data [ pos >> 3 ] >> ( pos & 7 ) & ( 1 << width ) - 1 result . append ( '{:0{}b}' . format ( data , width ) ) elif availableBits < 8 : #read rest of byte, ending at boundary data = self . stream . data [ pos >> 3 ] >> ( pos & 7 ) result . append ( '|{:0{}b}' . format ( data , availableBits ) ) else : #read whole byte (in hex), beginning and ending at boundary data = self . stream . data [ pos >> 3 ] result . append ( '|{:02X}h' . format ( data ) ) width -= availableBits pos += availableBits #if width overshot from the availableBits subtraction, fix it pos += width #add comma to separate fields result . append ( ',' ) #concatenate pieces, reversed, skipping the last space return '' . join ( result [ - 2 : : - 1 ] )
Show formatted bit data:
        Bytes are separated by commas
        whole bytes are displayed in hex
        >>> Layout(olleke).formatBitData(6, 2, 16)
        '|00h|2Eh,|00'
        >>> Layout(olleke).formatBitData(4, 1, 0)
        '1'
Show formatted bit data : Bytes are separated by commas whole bytes are displayed in hex >>> Layout ( olleke ) . formatBitData ( 6 2 16 ) |00h|2Eh |00 >>> Layout ( olleke ) . formatBitData ( 4 1 0 ) 1