相关疑难解决方法(0)

检查字符串是否为十六进制

我知道最简单的方法是使用正则表达式,但我想知道是否有其他方法可以进行此检查.

我为什么需要这个?我正在编写一个Python脚本,从SIM卡读取短信(SMS).在某些情况下,十六进制消息到达,我需要为它们做一些处理,所以我需要检查收到的消息是否是十六进制.

当我发送以下短信时:

Hello world!
Run Code Online (Sandbox Code Playgroud)

我的剧本收到了

00480065006C006C006F00200077006F0072006C00640021
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,我会收到正常的短信(不是十六进制).所以我需要做一个if hex控件.

我使用的是Python 2.6.5.

更新:

这个问题的原因是,(某种程度上)我发送的消息是在接收hex到运营商发送的消息(信息消息和广告)时作为普通字符串接收的.所以我决定进行检查并确保我以正确的字符串格式显示消息.

一些额外的细节:我使用华为3G调制解调器和PyHumod从SIM卡读取数据.

可能是我的最佳解决方案:

处理这种字符串的最好方法是使用a2b_hex(aka 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!'
Run Code Online (Sandbox Code Playgroud)

python hex

41
推荐指数
4
解决办法
7万
查看次数

标签 统计

hex ×1

python ×1