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;
	}