Qt

时间:2017-12-16 14:34:50

标签: c++ qt

QByteArray x;

x[0] = 0xAA; 
qDebug() << QString::number(x[0] , 16);

我在调试屏幕中看到了ffffffffffffffaa。我认为QBteArray是签名字符。那么如何正确地将这些数据存储在QByteArray中,或者如何将数据转换并保存为无符号变量呢?

1 个答案:

答案 0 :(得分:1)

数据存储正确,您可以通过直接打印数组x的内容而不使用QString::number(即qDebug() << x;)来检查数据,这应输出:{{1} }。

意外输出的原因是"\xAA"7 overloads,所有这些都与第一个参数的类型不同。受支持的类型包括QString::numberlonguintintuintqlonglongqulonglong。所有处理整数类型的重载都是implemented by调用doublereturn number(qlonglong(n), base);

这就是为什么您传递给return number(qulonglong(n), base);的{​​{1}}被视为char(即QString::number,这意味着qlonglong,然后转换此值到x[0] = 0xAA因此x[0] = -86返回qlonglong)。