Concaténer deux 32 bits int pour obtenir une version 64 bits de long en Python
Je veux générer 64 bits de long int pour servir les ID unique pour les documents.
Une idée est de combiner l'ID de l'utilisateur, qui est un 32 bits de type int, avec le timestamp Unix, ce qui est une autre de 32 bits de type int, pour former un unique 64 bits entier long.
Une échelle réduite par exemple serait:
Combiner deux de 4 bits numéros de 0010
et 0101
pour former le nombre de 8 bits 00100101
.
- Ne ce schéma de sens?
- Si oui, comment dois-je faire de la "concaténation" des numéros en Python?
Voici une question et de la réponse lorsque le bit longueurs des deux nombres peuvent ne pas être identiques, ou lorsque l'un des deux bits de longueur connue.
OriginalL'auteur Continuation | 2010-08-24
Vous devez vous connecter pour publier un commentaire.
Décalage à gauche le premier nombre par le nombre de bits dans le deuxième numéro, puis ajouter (ou bit à bit OU - remplacer
+
avec|
dans les exemples suivants) le second nombre.À l'égard de votre réduit exemple,
Oui, on pouvait noter.
Il peut être judicieux d'utiliser un masque de bits si une des valeurs est jamais >32 bits.
Comment cela fonctionnerait-il? Comment serait-il fait?
assert y < 0xFFFFFFFF
ouy &= 0xFFFFFFFF
en fonction de si grands nombres sont autorisés ou pas.OriginalL'auteur sykora
OriginalL'auteur Amber
Cela devrait le faire:
OriginalL'auteur carl
Pour le gars à côté (qui était en moi, dans ce cas, c'était moi). Voici un moyen de le faire en général (pour l'échelle exemple):
pour d'autres tailles de changer les 4 en 32 ou quoi que ce soit.
OriginalL'auteur Brian Larsen
Aucune des réponses avant cette couvrent à la fois la fusion et fractionnement des nombres. Le fractionnement peut être aussi bien une nécessité, car la fusion.
OriginalL'auteur A-B-B