《Qt数据类型》--基本数据类型QByteArray,QString,char,byte之间的转换

在上位机通讯中,根据通讯协议,有时候需要发送16进制的数据,本人在编程的时候容易把各种数据字面值和实际值搞混淆,故写这篇文章给大家参考,也给自己提醒。

在Qt中串口的接收和发送的数据类型都是QByteArray,因此我们需要在通讯的双方进行数据转换,此时我们根据通讯协议,有的设备接收字符串,而有的设备接收16进制的数据。

一般我们发送16进制的数据时使用长度为一个字节的数据类型,比如char,然后在QByteArray的构造函数中初始化进行数据的传输。同时,0x41=65=‘A’,即在16进制下该数据为0x41,在十进制下为65,在ASCII码下为字符A,这时,0x41和"0x41"是完全不同的,前者代表一个数,后者代表一个字符串。为了发送16进制的数据,我的做法是建立一个const char类型的数组,将需要发送的数据存入该数组中,然后在QByteArray的构造函数中调用,此时所得到的数据即要发送的数据。

    const char data[3]={0xF5,0x02,0xff};
    QByteArray s(data);


// QString转QByteArray方法

//Qt5.3.2
QString str("hello");  
QByteArray bytes = str.toUtf8(); // QString转QByteArray方法1 

QString str("hello");  
QByteArray bytes = str.toLatin1();  // QString转QByteArray方法2
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

//QByteArray转QString方法

//Qt5.3.2
    QByteArray bytes("hello world");
    QString string = bytes;   // QByteArray转QString方法1

    QByteArray bytes("hello world");
    QString string;
    string.prepend(bytes);// QByteArray转QString方法2

    qDebug() << string;
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

QByteArray类同样不以’\0’为结尾:如

QByteArray bytes;  
bytes.resize(5);  
bytes[0] = '1';  
bytes[1] = '2';  
bytes[2] = '3';  
bytes[3] = '\0';  
bytes[4] = 'a';  

cout << bytes << endl;  
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值