code: def getSizedInteger(self, data, byteSize, as_number=False):
          
          result = 0
          if byteSize == 0:
              raise InvalidPlistException("Encountered integer with byte size of 0.")
          # 1, 2, and 4 byte integers are unsigned
          elif byteSize == 1:
              result = unpack('>B', data)[0]
          elif byteSize == 2:
              result = unpack('>H', data)[0]
          elif byteSize == 4:
              result = unpack('>L', data)[0]
          elif byteSize == 8:
              if as_number:
                  result = unpack('>q', data)[0]
              else:
                  result = unpack('>Q', data)[0]
          elif byteSize <= 16:
              # Handle odd-sized or integers larger than 8 bytes
              # Don't naively go over 16 bytes, in order to prevent infinite loops.
              result = 0
              if hasattr(int, 'from_bytes'):
                  result = int.from_bytes(data, 'big')
              else:
                  for byte in data:
                      if not isinstance(byte, int): # Python3.0-3.1.x return ints, 2.x return str
                          byte = unpack_from('>B', byte)[0]
                      result = (result << 8) | byte
          else:
              raise InvalidPlistException("Encountered integer longer than 16 bytes.")
          return result
docs: Numbers of 8 bytes are signed integers when they refer to numbers, but unsigned otherwise.