Verifique se uma string é hexadecimal

Eu sei que a maneira mais fácil é usar umexpressão regular, mas eu me pergunto se há outras maneiras de fazer essa verificação.

Por que eu preciso disso? Eu estou escrevendo um script Python que lê mensagens de texto (SMS) de umSIM cartão. Em algumas situações, mensagens hexadecimais chegam e eu preciso fazer algum processamento para elas, portanto, preciso verificar se uma mensagem recebida é hexadecimal.

Quando eu envio o seguinte SMS:

Hello world!

E meu roteiro recebe

00480065006C006C006F00200077006F0072006C00640021

Mas em algumas situações, recebo mensagens de texto normais (não hexadecimais). Então eu preciso fazer umse hexadecimal ao controle.

Eu estou usando o Python 2.6.5.

ATUALIZAR:

A razão desse problema é que (de alguma forma) as mensagens que eu enviei são recebidas comohex enquanto as mensagens enviadas pelo operador (mensagens informativas e anúncios) são recebidas como uma string normal. Então eu decidi fazer uma verificação e garantir que eu tenho a mensagem no formato de seqüência correta.

Alguns detalhes extras: Estou usando um modem Huawei 3G ePyHumod para ler dados do cartão SIM.

Possível melhor solução para a minha situação:

A melhor maneira de lidar com essas cadeias é usandoa2b_hex (a.k.a.unhexlify) eutf-16 big endian encoding (como @JonasWielicki mencionou):

from binascii import unhexlify  # unhexlify is another name of a2b_hex

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

questionAnswers(9)

yourAnswerToTheQuestion