背景介绍
当前项目中,需要把监测到的数据,从监测端发送到服务器端,并且在服务器端上画图显示出来。为减少开发工作量,在服务器上的开发是用python来实现的(检测端用的是c和c++),然后在服务器上的解析上遇到了一些问题;
具体问题
由于用python解析c/c++发来的数据解析有问题——原来设计的是监测端(c/c++)发送的数据是 unsigned long long;但是在python段解析时出现了问题,哪怕是用python 自带的struct进行解析也是不对的——不知道是我使用的问题不——因为不值得在这上面浪费时间,所以在c/c++发送时,把数据转换为字符串进行发送,python端接收到数据后做一下转换即可;
c/c++发送时的数据格式是: data0:data1:data2:data3\n
python端接收到的数据经过初步处理后是这样的:
80:44:24:72\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
为便于后面的data解析,需要截取 ‘\n’前面的字符串,然后基于 ‘:‘进行split;
获取’\n’的index时,用的find,入参填写的就是’\n’,但是返回值一直是 -1,也就是没找到,这是为啥呢,调试了好一会也不知道原因,后来突然想到可能是因为转义字符的问题,换成了 ‘\n’,结果正确,以此为记