/** * Read a byte as a float * * @return float */ public function readDouble() { $double = $this->readRawBytes(8); if (Spec::isLittleEndian()) { $double = strrev($double); } $double = unpack("d", $double); return $double[1]; }
private function deserializeDouble() { $double = $this->stream->readRawBytes(8, true); if (Spec::isLittleEndian()) { $double = strrev($double); } $double = unpack('d', $double); return array_pop($double); }
private function serializeArray($data) { $ref = $this->referenceStore->getReference($data, ReferenceStore::TYPE_OBJECT); if ($ref !== false) { //use reference $this->serializeInt($ref << 1); return; } $isDense = Spec::isDenseArray($data); if ($isDense) { $this->serializeInt(count($data) << 1 | Spec::REFERENCE_BIT); $this->serializeString(''); foreach ($data as $element) { $this->serialize($element); } } else { $this->serializeInt(1); foreach ($data as $key => $value) { $this->serializeString((string) $key, false); $this->serialize($value); } $this->serializeString(''); } }