コードは次のとおりです。
echo sprintf('%u',-123);
そして、これは32ビットプラットフォームでの出力です。
4294967173
しかし、64ビットの場合:
18446744073709551493
同じにする方法?たとえば、int(10)unsigned
echo sprintf('-%u',abs(-123));
また
$n = -123;
echo sprintf("%s%u", $n < 0 ? "-":"", abs($n));
ただし、32 ビットに制限された負の数の 2 の補数の符号なし値を実際に表示したい場合は、次のようにします。
echo sprintf("%u", $n & 0xffffffff);
そして、それは4294967173
すべてのシステムで印刷されます。
いくつかのアイデアについては、この質問に対する私の回答を確認してください。一言で言えば、PHP_INT_SIZE 定数の値を確認して、64 ビット プラットフォームでさまざまな処理を実行できます。