Seite 1 von 1

hex in ascii

Verfasst: Mittwoch 10. August 2005, 14:06
von 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:

Verfasst: Mittwoch 10. August 2005, 14:18
von mawe
Hi!

So?

Code: Alles auswählen

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

Verfasst: Mittwoch 10. August 2005, 14:24
von patrickk
Hi,


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


Patrick

Verfasst: Mittwoch 10. August 2005, 14:37
von Gast
Meinst du sowas?

Code: Alles auswählen

>>> chr(0x41)
'A'
Gruß,
Gast

Verfasst: Mittwoch 10. August 2005, 14:38
von jens

Verfasst: Mittwoch 10. August 2005, 14:39
von Leonidas

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'

Verfasst: Mittwoch 10. August 2005, 14:47
von jens
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 )

Verfasst: Freitag 12. August 2005, 12:56
von 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

Verfasst: Freitag 12. August 2005, 13:02
von Leonidas
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'>

Verfasst: Freitag 12. August 2005, 13:14
von 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

Verfasst: Freitag 12. August 2005, 13:20
von jens
Achtung, böses eval(), geht bestimmt einfacher/besser:

Code: Alles auswählen

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

Verfasst: Freitag 12. August 2005, 16:52
von rayo
jep geht einfacher:

Code: Alles auswählen

zahl = int('0x0A',16)
print zahl,'=>',chr(zahl)
Gruss

Re: hex in ascii

Verfasst: Mittwoch 4. Januar 2017, 11:03
von error404
Wie ist das wenn ich ein Hexwert zahl=3423546435775 habe und diesen als ascii ausgeben will und die Hexzahl halt unterscheidlich lang sein kann?

Re: hex in ascii

Verfasst: Mittwoch 4. Januar 2017, 11:25
von 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?

Re: hex in ascii

Verfasst: Mittwoch 4. Januar 2017, 14:03
von error404
Sry, ich meine als Zahl=24 43 65 23 54 45 65 also immer 2 zusammen.

Re: hex in ascii

Verfasst: Mittwoch 4. Januar 2017, 14:18
von Sirius3
@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?

Re: hex in ascii

Verfasst: Mittwoch 4. Januar 2017, 14:40
von 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.

Re: hex in ascii

Verfasst: Mittwoch 4. Januar 2017, 14:46
von error404
Danke, hat mir sehr weitergeholfen.