Überprüfen Sie, ob eine Zeichenfolge hexadezimal ist

Ich weiß, der einfachste Weg ist die Verwendung von aregulären Ausdruck, aber ich frage mich, ob es andere Möglichkeiten gibt, diese Prüfung durchzuführen.

Warum brauche ich das? Ich schreibe ein Python-Skript, das Textnachrichten (SMS) von einem liestSIM Karte. In einigen Situationen kommen hexadezimale Nachrichten an und ich muss einige Verarbeitungsschritte für sie ausführen. Daher muss ich überprüfen, ob eine empfangene Nachricht hexadezimal ist.

Wenn ich folgende SMS sende:

Hello world!

Und mein Drehbuch erhält

00480065006C006C006F00200077006F0072006C00640021

In einigen Situationen erhalte ich jedoch normale Textnachrichten (nicht hexadezimal). Also muss ich a tunwenn hex Steuerung.

Ich benutze Python 2.6.5.

AKTUALISIEREN:

Der Grund für dieses Problem ist, dass (irgendwie) von mir gesendete Nachrichten als empfangen werdenhex Während vom Operator gesendete Nachrichten (Infonachrichten und Anzeigen) als normale Zeichenfolge empfangen werden. Deshalb habe ich mich entschlossen, eine Überprüfung durchzuführen und sicherzustellen, dass die Nachricht im richtigen Zeichenfolgenformat vorliegt.

Einige zusätzliche Details: Ich benutze ein Huawei 3G Modem undPyHumod um Daten von der SIM-Karte zu lesen.

Möglicherweise beste Lösung für meine Situation:

Der beste Weg, mit solchen Zeichenfolgen umzugehen, ist die Verwendung vona2b_hex (a.k.a.unhexlify) undutf-16 big endian encoding (wie @JonasWielicki erwähnt):

from binascii import unhexlify  # unhexlify is another name of a2b_hex

mystr = "00480065006C006C006F00200077006F0072006C00640021"
unhexlify(mystr).encode("utf-16-be")
>> u'Hello world!'

Antworten auf die Frage(9)

Ihre Antwort auf die Frage