Ejemplo n.º 1
0
 public function testBitsDiffering()
 {
     $this->assertEquals(0, FormatInformation::numBitsDiffering(1, 1));
     $this->assertEquals(1, FormatInformation::numBitsDiffering(0, 2));
     $this->assertEquals(2, FormatInformation::numBitsDiffering(1, 2));
     $this->assertEquals(32, FormatInformation::numBitsDiffering(-1, 0));
 }
Ejemplo n.º 2
0
 /**
  * Decodes version information from an integer and returns the version.
  *
  * @param  integer $versionBits
  * @return Version|null
  */
 public static function decodeVersionInformation($versionBits)
 {
     $bestDifference = PHP_INT_MAX;
     $bestVersion = 0;
     foreach (self::$versionDecodeInfo as $i => $targetVersion) {
         if ($targetVersion === $versionBits) {
             return self::getVersionForNumber($i + 7);
         }
         $bitsDifference = FormatInformation::numBitsDiffering($versionBits, $targetVersion);
         if ($bitsDifference < $bestDifference) {
             $bestVersion = $i + 7;
             $bestDifference = $bitsDifference;
         }
     }
     if ($bestDifference <= 3) {
         return self::getVersionForNumber($bestVersion);
     }
     return null;
 }