qt5.10 通讯数据处理----2进制转换----基础知识复习

最近在做车辆CAN总线到我写的qt程序的通讯,硬件选用的是致远电子的盒子,在上位机程序上加了udp传输,界面端使用的qt5.10,现在数据已经拿到并处理。过程有点麻烦,花了我几天时间。现在还有偶尔末位丢帧的小问题(也可能是UDP本身问题)。今天记录下来,做个备份。上位机端使用的是C++,发送UDP使用的是bytearray。在qt端拿到数据后如何根据CAN定义文档取出想要的位?感谢胡同学的提醒,计算机内部存储的都是二进制,只是显示内容不同。今天我测试了qt二进制的运算,效果很好。代码如下:(下面代码是在widget中)

    unsigned char a=255;//a=1111 1111 char是8bit
    unsigned char b=170;//b=1010 1010
    unsigned char c=a^b<<4;//c=0101 1111一开始以为移位补1了,后来发现是位移优先级高,先算了位移,虚惊一场
    QString d;
    d=QString("0b%1").arg(c,8,2,QLatin1Char('0'));//第一个参数:要显示的数

                                                                               //第二个参数:要显示的最小位数

                                                                               //第三个参数:进制

                                                                               //第四个参数:不够位数的补什么
    ui->lbl4->setText(d);


猜你喜欢

转载自blog.csdn.net/vivian0239/article/details/80894244