Example #1
0
 /**
  * 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];
 }
Example #2
0
 private function deserializeDouble()
 {
     $double = $this->stream->readRawBytes(8, true);
     if (Spec::isLittleEndian()) {
         $double = strrev($double);
     }
     $double = unpack('d', $double);
     return array_pop($double);
 }
Example #3
0
 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('');
     }
 }