'Read a specified amount of Bytes form the pack object
:param length: amount of bytes to read
:return: bytestring'

def read(self, length):

    end = (self.offset + length)
    if ((self.base_offset + end) > self.pack_length):
        data = self.buff[self.offset:]
        self.offset = end
        return data
    if (end > len(self.buff)):
        self._read(more=True)
        return self.read(length)
    data = self.buff[self.offset:end]
    self.offset = end
    return data
