Python:如何用过滤器查找设备的IMEI?

4 投票
1 回答
3122 浏览
提问于 2025-04-18 18:04

总结

我正在使用一个MT4000遥测设备,通过30000端口发送数据,然后用一个Python的UDP监听器来接收这些数据,并把它们存入数据库。接着,一个PHP页面读取这些数据,并以JSON格式展示出来。

目标

我想在网页上添加一个功能,让用户可以选择他们想查看数据的设备,作为一种筛选方式。

方法

我想用Python编程来提取设备的IMEI号码,这是一种唯一识别设备的方法。我知道IMEI号码在每个发送的数据包中都有,是一个15位的数字。

解决方案

在页面上添加筛选功能的理论是什么?如果你想给我投反对票(或者不投也可以),请留下理由,这样我可以改进我的提问方式。谢谢。

1 个回答

2

你知道这个数字具体在哪里吗?也就是说,它在数据包中的位置是怎样的?还是你只知道在数据包的某个地方有15个连续的数字,这些数字是IMEI?

如果你能回答第一个问题,说明你知道数字的位置,那么提取IMEI应该没什么问题。不过我猜情况可能不是这样。

接下来讲的内容只适用于你完全不知道数据包结构的情况,这时你只能在数据包中寻找15个连续的数字,希望它们就是IMEI。

如果数据包的内容在你的Python代码中是以字符串的形式表示(或者你能把它转换成字符串),那么最简单(但不是最有效)的方法可能是使用正则表达式,比如 \d{15}

另一种方法是手动遍历数据包(假设它是一个字符串):

def findImei(packet):
    start = -1;
    cnt = 0;
    for i, c in enumerate(packet):
        if not c.isdigit():
            cnt = 0;
            continue;
        if cnt == 0:
            start = i;
        cnt += 1;
       if cnt == 15:
           return packet[start : i + 1]
    return None;

撰写回答