/** * Tests the conversion of a hexadecimal string into a signed integer. * * @dataProvider hexToSignedIntProvider * @covers hexToSignedInt * * @param string $hex a hexadecimal string * @param int $res the resulting signed integer */ public function testHexToSignedInt($hex, $res) { $this->assertSame($res, Math::hexToSignedInt($hex)); }
/** * Decodes a GID string and outputs the results as array. * * @param string $gid the GID to parse * @return array boolean array with indices <code>type</code>, <code>crc32Name</code>, * <code>localID</code> and <code>uniqueID</code> for the GID type, CRC32 of name (hexadecimal), * local ID and unique ID or <code>false</code> if the GID string is malformed */ public function decode($gid) { if (!preg_match('#^[0-9a-f]{32}$#', $gid)) { return false; } $res = array(); $res['type'] = (int) hexdec($gid[0]); $res['crc32Name'] = ltrim(substr($gid, 1, 8), '0'); if (empty($res['crc32Name'])) { $res['crc32Name'] = '0'; } $res['localID'] = Math::hexToSignedInt(ltrim(substr($gid, 9, 8), '0')); $res['uniqueID'] = ltrim(substr($gid, 17, 13), '0'); return $res; }