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

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

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

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

Hello world!

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

00480065006C006C006F00200077006F0072006C00640021

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

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

ОБНОВЛЕНИЕ:

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

Некоторые дополнительные детали:Я использую модем Huawei 3G и PyHumod для чтения данных с SIM-карты.

Возможное лучшее решение моей ситуации:

Лучший способ обрабатывать такие строки — использоватьa2b_hex(он жеunhexlifyutf-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!'

41
задан Peter Mortensen 15 August 2016 в 15:11
поделиться