So erzeugen Sie eine UUID vom Typ long (verzehrt zu werden von einem java-Programm in Python?

Wie generieren Sie die UUID des Typs long (64-bits - konsumiert werden von einem java-Programm mit Python?

Lese ich über die UUID-Modul. Also ich spielte mit ihm ein wenig:

>>> import uuid
>>> uuid.uuid1().int
315596929882403038588122750660996915734L

Warum ist es ein "L" am Ende der integer generated by uuid.uuid1().int? Wenn es ein integer-sollte es nicht aus reinen zahlen?

Auch nach der Dokumentation der uuid.uuid1().int erzeugt einen 128-bit integer. Ich brauche eine Ganzzahl vom Typ long (für ein java-Programm), das würde bedeuten es müssen 64 bit sein. Ist es möglich, zum erzeugen einer UUID 64 bit anstelle von 128 bit?

Ein weiteres problem ist, dass nach dem Python-doc ein Python int ist 32 bit, während eine Python lang hat "unbegrenzte Präzision." Was bedeutet "unbegrenzte Präzision" bedeuten? Brauche ich ein 64 bit long int - welche Python-Typ wäre das?

EDIT:
Vielen Dank für alle Antworten. Sieht aus wie UUID ' s sind per definition 128 bits. In diesem Fall habe ich wahrscheinlich sollte nicht mit dem Begriff UUID. Was ich will zu tun ist, um generiert eine eindeutige ID, die vom Typ long (64 bits). Ich dachte UUID würde die Arbeit machen, aber es sieht aus wie es nicht geht.

Muss ich, dass ID die Dokumenten-ID für die Solr Suchmaschine. Ich bin mit einem Echtzeit-Indexierung Solr-plugin Zoie. Und laut der Dokumentation "Zoie übernimmt jeder Datensatz indiziert werden, muss eine eindeutigen Schlüssel und der Typ lange."

So gegeben, das ist, was ich brauche, weißt du, was ich tun kann, um eine eindeutige ID vom Typ long?

Danke!

  • "unendliche Präzision" bedeutet, es ist wie ein BigInteger in Java. Der Daten-Typ wird nicht von einer festen Länge, aber es kann wachsen, um Platz für ganze zahlen so groß, wie Sie wollen (bis Sie laufen out of memory).
  • Hinzufügen thilos Kommentar auf "unbegrenzte Präzision", die häufiger name ist Arbitrary-precision Arithmetic. In Python 3.x, regelmäßigen ints handeln auch auf diese Weise, nicht nur longs.
  • Wie bereits beantwortet, L ist nur die interne Darstellung, um zu zeigen, es ist größer als 32bit. Wenn Sie mit einem regulären print-Anweisung print(uuid.uuid1().int) Sie nicht sehen, den L
InformationsquelleAutor Continuation | 2010-08-20
Schreibe einen Kommentar