Ich versuche, dies zu tun:bitweise XOR-Operator nicht in Python arbeitet
drucken 17593028247552^909522486
Das Ergebnis 67.450.422 sein muss (wie in Javascript ist), aber ich bin immer 17592253494838L
Bitte helfen Sie mir! Vielen Dank im Voraus :)
Ich versuche, dies zu tun:bitweise XOR-Operator nicht in Python arbeitet
drucken 17593028247552^909522486
Das Ergebnis 67.450.422 sein muss (wie in Javascript ist), aber ich bin immer 17592253494838L
Bitte helfen Sie mir! Vielen Dank im Voraus :)
Python 2 long
Typ (oder int
in Python 3) kann so groß werden, wie sie brauchen, aber es sieht aus wie Sie wollen ein 32-Bit-Ergebnis.
Sie müssen nur das Ergebnis maskieren, so dass Sie nur die niedrigen 32 Bits des Ergebnisses erhalten. Und ich nehme an, dass Sie, da Sie auf Python 2 sind, es auch von long
zu int
konvertieren sollten.
>>> int((17593028247552^909522486) & 0xffffffff)
67450422
habe ich nur Windows-Rechner:
100000000000000110010001100110000000000000000 = 17593028247552d
000000000000000110110001101100011011000110110 = 909522486d
100000000000000000100000001010011011000110110 = 17592253494838d
Sieht aus wie JavaScript ist falsch. Es wird wahrscheinlich auf 32 Bit oder etwas kleiner, bevor XOR gemacht wird. Python ist eine beliebige Genauigkeit für Ganzzahlen.
Bearbeiten: Wie die andere Antwort zeigt, wenn Sie immer noch Python 2 verwenden (tun Sie das nicht!) Nur lang ist willkürliche Genauigkeit; Die Genauigkeit von Int kann variieren, ist aber normalerweise 64 Bit. In Python 3 gibt es nur einen Integer-Typ und es ist immer eine beliebige Genauigkeit.
Python kann 32 Bit oder 64 Bit sein. Einige von uns laufen immer noch 32-Bit-Maschinen ... In einem 32-Bit-Build ist Python 2 "int" 32 Bit. –
Ich könnte versucht sein, es als "2 ** 32 - 1" zu setzen, um es ein wenig offensichtlicher zu machen, wie viele Bits das Ergebnis gerundet wird (und eine schnelle Änderung, wenn Sie es runden wollten) 64 zum Beispiel ...) –
@Jon Fair genug. Vielleicht bin ich altmodisch, aber ich mag die Hex-Form. :) OTOH, Python wird '2 ** 32 - 1' auswerten, wenn es das Skript kompiliert, also gibt es keinen wirklichen Vorteil bei der Verwendung der Hex-Form. –
Ich mag auch die Hex-Form - ich würde es einfach nicht für 128 Bits tippen wollen :) (Ich würde es wahrscheinlich für einen Anfang falsch machen ...) –