code: def read_octet(self, unpacker=Struct('B').unpack_from,
                     size=Struct('B').size):
          
          # Technically should look at unpacker.size, but skipping that is way
          # faster and this method is the most-called of the readers
          if self._pos >= self._end_pos:
              raise self.BufferUnderflow()
          rval = unpacker(self._input, self._pos)[0]
          self._pos += size
          return rval
docs: Read one byte, return as an integer
  
          Will raise BufferUnderflow if there's not enough bytes in the buffer.
          Will raise struct.error if the data is malformed