在c++(qt)中,截十六位转八位的方法(十六进制转二进制,上位机数据传下位机时需要)

来源:互联网 发布:简单生活 知乎 编辑:程序博客网 时间:2024/04/29 17:48
    qint16 a =0x00ff;

    qDebug()<<uchar((a>>8)&0xff)<<" "<<uchar((a)&0xff)


因为qt输出的是int十进制,所以结果是 0 255


首先qint16是定义一个十六位的类型,0x00ff是255的十六进制

因为十六位转八位时会截取后八位

所以如果要完整截取需要取两次


第一次取前8位uchar((a>>8)&0xff)

ucha : r是一个八位的字符类型,所以截八位时可以使用uchar这类型强制转换

(a>>8) :把a的高八位00000000向右移8位

&0xff : 与0xff位与操作(不操作数值也是一样,但是要转换成二进制就需要位与操作)


第二次因为直接截后八位,所以不需要移位

取得方法与第一次一样


这样就完成了从十六位转八位(pc转单片机),十六进制转二进制的数据转换

原创粉丝点击