it-swarm.com.de

Wie konvertiert man eine Ganzzahl in Hexadezimalzeichen ohne die zusätzlichen '0x' führenden und 'L' nachfolgenden Zeichen in Python?

Ich versuche, eine große Ganzzahl in Hexadezimalzahl umzuwandeln, aber im Ergebnis bekomme ich am Anfang zusätzlich "0x" und am und "L". Gibt es eine Möglichkeit, sie zu entfernen? Danke .. Die Nummer ist:

44199528911754184119951207843369973680110397865530452125410391627149413347233422
34022212251821456884124472887618492329254364432818044014624401131830518339656484
40715571509533543461663355144401169142245599341189968078513301836094272490476436
03241723155291875985122856369808620004482511813588136695132933174030714932470268
09981252011612514384959816764532268676171324293234703159707742021429539550603471
00313840833815860718888322205486842202237569406420900108504810

Im Hex bekomme ich:

0x2ef1c78d2b66b31edec83f695809d2f86e5d135fb08f91b865675684e27e16c2faba5fcea548f3
b1f3a4139942584d90f8b2a64f48e698c1321eee4b431d81ae049e11a5aa85ff85adc2c891db9126
1f7f2c1a4d12403688002266798ddd053c2e2670ef2e3a506e41acd8cd346a79c091183febdda3ca
a852ce9ee2e126ca8ac66d3b196567ebd58d615955ed7c17fec5cca53ce1b1d84a323dc03e4fea63
461089e91b29e3834a60020437db8a76ea85ec75b4c07b3829597cfed185a70eeaL
16
user1047517

Sicher, gehen Sie vor und entfernen Sie sie.

hex(bignum).rstrip("L").lstrip("0x") or "0"

(Hat die strip()-Route verlassen, so dass es trotzdem funktioniert, wenn diese zusätzlichen Zeichen nicht vorhanden sind.)

35
kindall

Der 0x ist eine wörtliche Darstellung von Hex-Zahlen. Und L bedeutet am Ende, dass es eine Long Integer-Zahl ist.

Wenn Sie nur eine hexadezimale Darstellung der Zahl als Zeichenfolge ohne 0x und L wünschen, können Sie die Zeichenfolgenformatierung mit %x verwenden.

>>> a = 44199528911754184119951207843369973680110397
>>> hex(a)
'0x1fb62bdc9e54b041e61857943271b44aafb3dL'
>>> b = '%x' % a
>>> b
'1fb62bdc9e54b041e61857943271b44aafb3d'
56

Ähnlich wie bei Praveen können Sie auch die integrierte format() direkt verwenden.

>>> a = 44199528911754184119951207843369973680110397
>>> format(a, 'x')
'1fb62bdc9e54b041e61857943271b44aafb3d'
6
Alex

Ich denke, es ist eine gefährliche Idee, Strip zu verwenden.
weil lstrip oder rstrip den 0 abstreifen. 

ex) 

a = '0x0'
a.lstrip('0x')  

''

ergebnis ist '', nicht '0'

In Ihrem Fall können Sie einfach replce verwenden, um die obige Situation zu verhindern.
Hier ist ein Beispielcode. 

hex(bignum).replace("L","").replace("0x","")
0
Jiwon

Seien Sie vorsichtig, wenn Sie die akzeptierte Antwort verwenden, da lstrip('0x') auch führende Nullen entfernt, die möglicherweise nicht Ihren Vorstellungen entsprechen (siehe unten):

>>> account = '0x000067'
>>> account.lstrip('0x')
'67'
>>>

Wenn Sie sicher sind, dass das Präfix '0x' immer vorhanden ist, können Sie es einfach wie folgt entfernen:

>>> hex(42)
'0x2a'
>>> hex(42)[2:]
'2a'
>>>

[2:] erhält jedes Zeichen in der Zeichenfolge mit Ausnahme der ersten beiden Zeichen.

0
mattvick