comment convertir une valeur entière négative en hexadécimal en python
J'utilise la version 2.6 de python
>>> hex(-199703103)
'-0xbe73a3f'
>>> hex(199703103)
'0xbe73a3f'
Positif et négatif de la valeur sont les mêmes?
Lorsque j'utilise calc, la valeur est FFFFFFFFF418C5C1
.
source d'informationauteur nic nic | 2011-10-19
Vous devez vous connecter pour publier un commentaire.
Python entiers peuvent croître de manière arbitraire. Afin de calculer le brut en complément à deux la façon dont vous le souhaitez, vous devez spécifier les bits de largeur. Votre exemple montre
-199703103
en 64 bits en complément à deux, mais il pourrait bien avoir été de 32 bits ou 128 bits, résultant en un nombre différent de0xf
's au début.hex()
ne pas le faire. Je suggère ce qui suit comme une alternative:Cette affiche:
Parce que Python entiers arbitrairement grands, vous avez pour masquer les valeurs à la limite de la conversion du nombre de bits que vous souhaitez pour votre 2s compléter la représentation.
Python affiche le simple cas de
hex(-199703103)
comme un négatif de la valeur hexadécimale (-0xbe73a3f
) car les 2 de compléter la représentation aurait un nombre infini de Fs en face d'elle pour une précision arbitraire nombre. La valeur de masque (2**32-1 == 0xFFFFFFFF) les limites de cette:Ajoutant à Les marques de réponsesi vous souhaitez un autre format de sortie, utilisez