public function packExt(Ext $ext) { $type = $ext->getType(); $data = $ext->getData(); $len = \strlen($data); switch ($len) { case 1: return "Ô" . \chr($type) . $data; case 2: return "Õ" . \chr($type) . $data; case 4: return "Ö" . \chr($type) . $data; case 8: return "×" . \chr($type) . $data; case 16: return "Ø" . \chr($type) . $data; } if ($len <= 0xff) { return "Ç" . \chr($len) . \chr($type) . $data; } if ($len <= 0xffff) { return \pack('CnC', 0xc8, $len, $type) . $data; } return \pack('CNC', 0xc9, $len, $type) . $data; }