Проверьте, является ли строка шестнадцатеричной

Я знаю, что самый простой способ - это использоватьрегулярное выражение, но мне интересно, есть ли другие способы сделать эту проверку.

Зачем мне это нужно? Я пишу скрипт Python, который читает текстовые сообщения (SMS) изSIM карта. В некоторых ситуациях поступают шестнадцатеричные сообщения, и мне нужно выполнить их обработку, поэтому мне нужно проверить, является ли полученное сообщение шестнадцатеричным.

Когда я отправляю следующие смс:

Hello world!

И мой сценарий получает

00480065006C006C006F00200077006F0072006C00640021

Но в некоторых ситуациях я получаю обычные текстовые сообщения (не шестнадцатеричные). Так что мне нужно сделатьif hex контроль.

Я использую Python 2.6.5.

ОБНОВИТЬ:

Причина этой проблемы в том, что (каким-то образом) отправленные мной сообщения принимаются какhex в то время как сообщения, отправляемые оператором (информационные сообщения и рекламные объявления), принимаются в виде обычной строки. Поэтому я решил проверить и убедиться, что у меня есть сообщение в правильном формате строки.

Some extra details: Я использую модем Huawei 3G иPyHumod читать данные с сим-карты.

Possible best solution to my situation:

Лучший способ обработать такие строки - использоватьa2b_hex (А.к.а.unhexlify) а такжеutf-16 big endian encoding (как упомянул @JonasWielicki):

from binascii import unhexlify  # unhexlify is another name of a2b_hex

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