Then I uploaded it to a m1.small amazon server and the right hex digits in the output of the comb_UUID function stuck at 7fffffff. Ahhhh, the joys are overflowing ;-)
So, I got onto the PHP site and found a great little piece of code for arbitrary length DecimalToHex and HexToDecimal code.
Here is what's necessary to make this work. If you wanted to get real fancy, and I will soon, a test for size of integer should be done inside the bcdec2hex program to avoid bcmath functions.
Found a good note on the PHP site. This does it either on 32 or 64 bit system:
(credit for the guy who did it):http://www.php.net/manual/en/ref.bc.php#99130
function bcdechex($dec) {
$last = bcmod($dec, 16);
$remain = bcdiv(bcsub($dec, $last), 16);
if($remain == 0) return dechex($last);
else return bcdechex($remain).dechex($last);
}
function make_comb_uuid(){
uuid_create(&$v4);
uuid_make($v4, UUID_MAKE_V4);
uuid_export($v4, UUID_FMT_STR, &$v4String);
$var=gettimeofday(FALSE);
return substr($v4String,0,24).substr(bcdechex($var['sec'].$var['usec']),0,12);
}
No comments:
Post a Comment