hex in ascii

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
patrickk

Hallo,


weiss jemand wie man hex in Ascii wandeln kann? Nicht andersrum!
Am besten eine python Loesung...
Will nicht staendig in Tabellen nachschaeun muessen...

Danke,


Patrick :shock: :shock: :shock: :shock:
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

So?

Code: Alles auswählen

>>> hex(123)
'0x7b'
>>> int(0x7b)
123
>>> str(0x7b)
'123'
Gruß, mawe
patrickk

Hi,


leider brauche ich Ascii. Ich habe hex als Daten und will das Ascii Zeichen...


Patrick
Gast

Meinst du sowas?

Code: Alles auswählen

>>> chr(0x41)
'A'
Gruß,
Gast
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Code: Alles auswählen

In [9]: s = 'M'
In [11]: d = ord(s)
In [13]: h = hex(d)
In [14]: h
Out[14]: '0x4d'
In [15]: chr(int(0x4d)
Out[15]: 'M'
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ups :oops: Ich sollte erstmal richtig die Frage durchlesen...

Ich hab auf Platte immer ein kleines Skript, welches eine ASCII Tabelle liefert, nett ist das String_Escape :

Code: Alles auswählen

for i in xrange(255):
    char = chr(i)
    string_escaped = chr(i).encode("String_Escape")
    if string_escaped == char: string_escaped = ""
    print "%3s - %-4s %s" % ( i, char, string_escaped )

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
patrickk

Hallo,


danke fuer die antworten. Und was mache ich, wenn ich einen string habe in dem ein hex wert steht? kann man das irgendwie konvertieren?
val = "0x50"
str(val)
da kommt natuerlich dasselbe wieder raus... wie kann man es umwandeln?


Danke,


Patrick
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

patrickk hat geschrieben:danke fuer die antworten. Und was mache ich, wenn ich einen string habe in dem ein hex wert steht? kann man das irgendwie konvertieren?
da kommt natuerlich dasselbe wieder raus... wie kann man es umwandeln?
In was willst du es umwandeln? In einen Dezimalwert?

Code: Alles auswählen

>>> hex(10)
'0xa'
>>> type(0xa)
<type 'int'>
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
patrickk

Hi,

ich moechte hex in scii umwandeln.
die hexwerte stehen aber in einem string..
val =50
val="0x"+val
str(val)
geht nicht, da es ein string bleibt...
es kommt 0x50 raus, statt dem ascii wert, den man bekommt, wenn man per hand str(0x50) schreibt...


Patrick
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Achtung, böses eval(), geht bestimmt einfacher/besser:

Code: Alles auswählen

val = 50
print str( eval( "0x%s" % val ) )

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

jep geht einfacher:

Code: Alles auswählen

zahl = int('0x0A',16)
print zahl,'=>',chr(zahl)
Gruss
error404
User
Beiträge: 18
Registriert: Montag 24. Oktober 2016, 09:14

Wie ist das wenn ich ein Hexwert zahl=3423546435775 habe und diesen als ascii ausgeben will und die Hexzahl halt unterscheidlich lang sein kann?
BlackJack

@error404: Was soll die Zahl 3423546435775 denn als ASCII bedeuten? ASCII kennt nur die Werte im Bereich von 0 bis 127 für ein Zeichen, diese Zahl ist bedeutend grösser. Und ist das tatsächlich eine Hexadezimalzahl? Also reden wir tatsächlich von der Zahl 917221509650293 im Dezimalsystem?
error404
User
Beiträge: 18
Registriert: Montag 24. Oktober 2016, 09:14

Sry, ich meine als Zahl=24 43 65 23 54 45 65 also immer 2 zusammen.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@error404: meinst Du jetzt 7 Zahlen, oder die Dezimalzahl 24436523544565, oder die Hexadezimalzahl 0x24436523544565, also dezimal 10207200825066853? Und eine dieser Zahlen willst Du nun in 6 bis 7 Zeichen umwandeln?
BlackJack

@error404: Das ist jetzt irgendwie eine *andere* Zahl und die ursprüngliche hatte auch eine ungerade Anzahl von Ziffern.

Falls 24436523544565 zur Basis 16 gemeint sein sollte und da als Ergebnis '$Ce#TEe' herauskommen soll, dann schau Dir mal das `binascii`-Modul in der Standardbibliothek an.

Edit: Sollte es eigentlich 10207200825066853 dezimal sein, dann hatten wir die `int.to_bytes()`-Methode ja schon mal in einem anderen Thema.
error404
User
Beiträge: 18
Registriert: Montag 24. Oktober 2016, 09:14

Danke, hat mir sehr weitergeholfen.
Antworten