2014-02-19 16 views
17

Ich möchte eine hexadezimale Zeichenkette (ex: 0xAD4) in hexadezimale Zahl umwandeln, dann 0x200 zu dieser Nummer hinzufügen und diese Nummer wieder in Form von 0x als Zeichenkette ausgeben.Wie konvertiert man eine hexadezimale Zeichenkette in Hexadezimalzahl

i für den ersten Schritt versucht:

str(int(str(item[1][:-2]),16)) 

aber den Wert, den eine Dezimalstring gedruckt bekommen kein Hex-formatierten String (in 0x-Format) (i das Endergebnis in Form drucken möchten von 0x)

  • [:-2] die letzten 00 von dieser Zahl
  • item[1] ist enthalten Hexadezimalzahl in Form von 0x
  • zu entfernen
+4

In Python gibt es keine solche Hex-Zahl. Es gibt nur Zahlen. Wenn Sie also eine hexadezimale Zeichenfolge in eine Zahl, nicht in eine hexadezimale Zahl, konvertieren möchten, müssen Sie eine Zahl als hexadezimale Zahl ausgeben. –

+0

@SteveJessop Ihr ​​Kommentar ist Antwort, und beide Antwort sind Kommentar :) –

+0

@GrijeshChauhan: Nein, es ist keine Antwort. Die Frage enthält ein Missverständnis, aber nach Korrektur dieses Missverständnisses steht die Frage immer noch und mein Kommentar beantwortet sie nicht. Die Antworten tun es. –

Antwort

34

Try this:

hex_str = "0xAD4" 
hex_int = int(hex_str, 16) 
new_int = hex_int + 0x200 
print hex(new_int) 

Wenn Sie die 0x am Anfang nicht mögen, ersetzen Sie die letzte Zeile mit

print hex(new_int)[2:] 
+0

danke für so eine schnelle Antwort .. – RATHI

8

Verwenden Sie int Funktion mit dem zweiten Parameter 16, um eine hexadezimale Zeichenfolge in eine ganze Zahl zu konvertieren. Schließlich, verwenden Sie hex Funktion, um es zurück in eine hexadezimale Zahl zu konvertieren.

print hex(int("0xAD4", 16) + int("0x200", 16)) # 0xcd4 

Stattdessen könnten Sie direkt tun

print hex(int("0xAD4", 16) + 0x200) # 0xcd4 
+0

Ich glaube, OP ist verwirrend, dass er zwischen i = 0xad4 und i = 2772 unterscheidet, wenn er "i" druckt. (und scheint, wenn ich seinen Dank liest) Anyways + an euch beide, wie ich jetzt nicht 'hex()' –

-1

Verwenden Sie Format stri ng

intNum = 123 
print "0x%x"%(intNum) 

oder hex Funktion.

intNum = 123 
print hex(intNum) 
+0

Es sieht aus wie reziproke OP will "String zu hex-Ziffer", Aber deine Antwort ist "Nummer zu einer Hex-Zeichenfolge" !! –

+0

Sie können die Antwort verbessern, indem Sie die Tatsache hinzufügen, dass die Hexadezimalzahl, die mit '0x' vorangeht, nur der Benutzerfreundlichkeit dient. Jede Zahl speichert in Binärform nicht einmal in Dezimalzahlen. –

+0

Ich denke, er möchte Integer-Zahl in Hex-String konvertieren. Weil er Hex-String bereits in Integer-Zahl konvertiert hat. –

Verwandte Themen