• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

QT QByteArray对象输出32位数据是怎么回事

donatello 2017-12-19 浏览量:2159

​如题,QByteArray类是QT用于存放8位长字符串的类,可是下面函数却会输出32位的数据:
QByteArray qba_data;
qba_data[0]=0xff;
qDebug("0x%x",qba_data[0]);

如果是换成
qDebug("0x%x",(uint8_t)qba_data[0]);

的话,就能正常输出0xff,请问这个是什么原因呢?QByteArray不是八位的字符串吗?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你要理解的是qDebug中默认%x对应的是uint32_t 数据类型的,所以这里默认进行了格式转换,,而后面强制了格式,所以没有转换而已,这和QByteArray到底存储数据的格式没有关系,不过后面的那个更准确。
    • 发布于 2017-12-19
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了 :带Q的是汽车级的 回复

其他答案 数量:1
  • 那个Qdebug打印长度好像跟系统位数有关的,你的系统是32位它就输出32位,但是加了uint_8就相当于强制类型转换了
    • 发布于2017-12-20
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :根据客户已给信息确定了几种型号,由于了解客户实际是否需要带开关以及保险数量,所以提供链接,客户根据实际使用情况进行选择,链接太长,私发QQ了 回复

相关问题

问题达人换一批

QT QByteArray对象输出32位数据是怎么回事