PHP处理创建和处理超过int范围的数据

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

 

你可能感兴趣的:(PHP)