32 비트 및 64 비트 플랫폼의 PHP의 부호없는 정수
문제
코드는 다음과 같습니다.
echo sprintf('%u',-123);
그리고 이것은 32 비트 플랫폼의 출력입니다.
4294967173
그러나 64 비트 :
18446744073709551493
동일하게 만드는 방법? int (10)가 서명되지 않은
해결책
echo sprintf('-%u',abs(-123));
또는
$n = -123;
echo sprintf("%s%u", $n < 0 ? "-":"", abs($n));
실제로 두 사람의 보완 부호없는 값을 32 비트로 제한하는 것을보고 싶다면 다음과 같습니다.
echo sprintf("%u", $n & 0xffffffff);
그리고 그것은 인쇄 할 것입니다 4294967173
모든 시스템에서.
다른 팁
내 대답을 확인하십시오 이 질문 일부 아이디어의 경우 - 간단히 말해서, 64 비트 플랫폼에서 다른 처리를 수행하려면 php_int_size 상수의 값을 확인할 수 있습니다.
제휴하지 않습니다 StackOverflow