Moin,
hab ein seltsames Problem. Ich arbeite mit relativ großen Zahlen (10^617). Die Zahlen werden vom Zufallsgenerator erzeugt, ich kann problemlos damit arbeiten (pow()), aber wenn ich sie normal oder mit pickle speichere, dann wieder entsprechend lade und die selbe Operation durchführen will, heißt es plötzlich, sie seien zu groß, um in einen C long konvertiert zu werden. Wie gesagt, mit exakt den selben Zahlen konnte ich vorher noch arbeiten, aber wenn ich sie von der Festplatte lade plötzlich nichtmehr. Bin gerade echt am verzweifeln!
Gruß
heiliga horsd
Seltsames Verhalten von Python (int zu groß)
Das Laden funktioniert ja auch, nur das anschließende verwenden der pow()-Funktion nicht.
pow(a,b,c) mit a < 10^5 b,c im Bereich 10^617
Wenn ich b und c vom Programm erzeugen lasse und dann die Pow-Funktion aufrufe funktioniert alles. pickle ich das ganze und lade das wieder geht das auch noch. Wenn ich nun die pow-Funktion mit den Werten aufrufe, sind sie plötzlich zu groß o.O
pow(a,b,c) mit a < 10^5 b,c im Bereich 10^617
Wenn ich b und c vom Programm erzeugen lasse und dann die Pow-Funktion aufrufe funktioniert alles. pickle ich das ganze und lade das wieder geht das auch noch. Wenn ich nun die pow-Funktion mit den Werten aufrufe, sind sie plötzlich zu groß o.O
Hab mal noch ein bisschen herumgespielt, das Problem tritt bereits bei Zahlen mit 10**38 auf o.O
Das kann ich mir nur sehr schwer vorstellen. Wenn ein gepickelter Wert in ein Pythonobjekt zurückgewandelt wurde, dann ist es genau so, als ob die Erzeugung des Objekt auf Grundlage der Angaben vom Parser des Interpreters eingeleitet wurde. Da sind dann keine Spuren von Pickle mehr vorhanden. Das *kann* also gar nicht sein (aber die Technik überrascht einen bekanntlich immer wieder). Bist du wirklich sicher, dass die "entpickelten" Daten wirklich 1:1 dem entsprechen, was du erwartest? Hast du jeden Wert abgeglichen? Auch mit Pseudozufallszahlen gibt es die Möglichkeit, reproduzierbares Verhalten zu schaffen, sodass man kontrollierte Tests schreiben könnte. Und dann zeig doch mal einen solchen Test. Ich finde nach wie vor deine Informationen viel zu dürftig, als dass man sinnvoll helfen könnte.
http://docs.python.org/release/3.1.5/li ... s.html#pow
Habe die Zahlen überprüft, sind identisch. Es geht um die dechiffrierung, d.h. die beiden Zahlen sind der Schlüssel. Wenn ich die Schlüssel frisch erzeugt habe, etwas verschlüssele und wieder entschlüsselte läuft das problemlos. Speichere ich den Schlüssel, lade ich ihn wieder und fange wieder das dechiffrieren an, bam, Overflow Error, Python Int zu groß um zu C float konvertiert zu werden.
Habe die Zahlen überprüft, sind identisch. Es geht um die dechiffrierung, d.h. die beiden Zahlen sind der Schlüssel. Wenn ich die Schlüssel frisch erzeugt habe, etwas verschlüssele und wieder entschlüsselte läuft das problemlos. Speichere ich den Schlüssel, lade ich ihn wieder und fange wieder das dechiffrieren an, bam, Overflow Error, Python Int zu groß um zu C float konvertiert zu werden.
Zuletzt geändert von heiliga horsd am Donnerstag 25. Oktober 2012, 15:12, insgesamt 1-mal geändert.
OK, Python neu installiert, PC neu gestartet, alles funktioniert. Bin zwar gerade echt überfragt, wo der Fehler lag, aber nun läuft alles einwandfrei! Danke für die Hilfe!