PHP unsigned integer auf 32-Bit und 64-Bit-Plattform
Frage
Hier ist der Code:
echo sprintf('%u',-123);
Und das ist die Ausgabe auf 32-Bit-Plattform:
4294967173
aber auf 64 Bit:
18446744073709551493
Wie es das gleiche machen? Sag mal, die int (10) unsigned
Lösung
echo sprintf('-%u',abs(-123));
oder
$n = -123;
echo sprintf("%s%u", $n < 0 ? "-":"", abs($n));
Obwohl, wenn Sie tatsächlich wollen, dass das Zweierkomplement Wert ohne Vorzeichen einer negativen Zahl sehen, beschränkt auf 32 Bit nur tun:
echo sprintf("%u", $n & 0xffffffff);
Und das 4294967173
auf allen Systemen gedruckt werden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow