PHP処理int範囲を超えるデータの作成と処理
719 ワード
function getCode($id){
if( !isset($id) || $id > 0xFF || $id < 0x0 ){
return null;
}
//$a 0~Integer.MaxValue , 32 , *2 32
$a = bcmul( rand( 0 , 0x7FFFFFFF ) , bcpow( 2 , 32 ) );
$b = bcadd( rand( 0 , 0x7FFFFFFF ) & 0x7FFFFF00 , $id );
return bcadd( $a , $b );
}
function getCompanyID($code){
if( !isset($code) || $code < 0 ){
return null;
}
// $code&0xFF
$num = 0;
for( $i = 0 ; $i < 8 ; $i++ ) {
$num += intval(bcmod( $code , 2 )) * pow( 2 , $i );
$code = bcdiv( $code , 2 );
}
return $num;
}