PHP 8.5.0 Alpha 1 available for testing

Voting

: one minus one?
(Example: nine)

The Note You're Voting On

arris at zsolttech dot com
13 years ago
not found anywhere crc64 based on http://bioinfadmin.cs.ucl.ac.uk/downloads/crc64/crc64.c .

(use gmp module)

<?php

/* OLDCRC */
define('POLY64REV', "d800000000000000");
define('INITIALCRC', "0000000000000000");
define('TABLELEN', 256);
/* NEWCRC */
// define('POLY64REV', "95AC9329AC4BC9B5");
// define('INITIALCRC', "FFFFFFFFFFFFFFFF");

if(function_exists('gmp_init')){
class
CRC64{

private static
$CRCTable = array();

public static function
encode($seq){

$crc = gmp_init(INITIALCRC, 16);
$init = FALSE;
$poly64rev = gmp_init(POLY64REV, 16);

if (!
$init)
{
$init = TRUE;
for (
$i = 0; $i < TABLELEN; $i++)
{
$part = gmp_init($i, 10);
for (
$j = 0; $j < 8; $j++)
{
if (
gmp_strval(gmp_and($part, "0x1")) != "0"){
// if (gmp_testbit($part, 1)){ /* PHP 5 >= 5.3.0, untested */
$part = gmp_xor(gmp_div_q($part, "2"), $poly64rev);
} else {
$part = gmp_div_q($part, "2");
}
}
self::$CRCTable[$i] = $part;
}
}

for(
$k = 0; $k < strlen($seq); $k++){
$tmp_gmp_val = gmp_init(ord($seq[$k]), 10);
$tableindex = gmp_xor(gmp_and($crc, "0xff"), $tmp_gmp_val);
$crc = gmp_div_q($crc, "256");
$crc = gmp_xor($crc, self::$CRCTable[gmp_strval($tableindex, 10)]);
}

$res = gmp_strval($crc, 16);

return
$res;
}
}
} else {
die(
"Please install php-gmp package!!!");
}
?>

<< Back to user notes page

To Top