0

コードは次のとおりです。

echo sprintf('%u',-123);

そして、これは32ビットプラットフォームでの出力です。

4294967173

しかし、64ビットの場合:

18446744073709551493

同じにする方法?たとえば、int(10)unsigned

4

2 に答える 2

3
echo sprintf('-%u',abs(-123));

また

$n = -123;
echo sprintf("%s%u", $n < 0 ? "-":"", abs($n));

ただし、32 ビットに制限された負の数の 2 の補数の符号なし値を実際に表示したい場合は、次のようにします。

echo sprintf("%u", $n & 0xffffffff);

そして、それは4294967173すべてのシステムで印刷されます。

于 2009-09-28T12:53:09.813 に答える
0

いくつかのアイデアについては、この質問に対する私の回答を確認してください。一言で言えば、PHP_INT_SIZE 定数の値を確認して、64 ビット プラットフォームでさまざまな処理を実行できます。

于 2009-09-28T13:06:19.473 に答える