private function unpackUint64()
{
if (!isset($this->buffer[$this->offset + 7])) {
throw new InsufficientDataException(8, \strlen($this->buffer) - $this->offset);
}
$num = \substr($this->buffer, $this->offset, 8);
$this->offset += 8;
//$num = \unpack('J', $num);
$set = \unpack('N2', $num);
$value = $set[1] << 32 | $set[2];
// PHP does not support unsigned integers.
// If a number is bigger than 2^63, it will be interpreted as a float.
// @link http://php.net/manual/en/language.types.integer.php#language.types.integer.overflow
return $value < 0 ? $this->handleIntOverflow($value) : $value;
}