QT中的QByTearray转换

QByteArray conversion in Qt

本文关键字:转换 QByTearray 中的 QT      更新时间:2023-10-16
QByteArray x;
x[0] = 0xAA; 
qDebug() << QString::number(x[0] , 16);

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

数据存储得正确,您可以直接打印数组x的内容而无需使用QString::number(即qDebug() << x;)检查,这应该输出:"xAA"

您意外输出的原因是QString::number有7个过载,所有这些都在第一个参数的类型上不同。支持类型是longuintintuintqlonglongqulonglongdouble。通过调用return number(qlonglong(n), base);return number(qulonglong(n), base);

这就是为什么您传递给QString::numberchar被视为 qlonglong(即x[0] = 0xAA,这意味着x[0] = -86,然后将此值转换为qlonglong,因此QString::number因此返回ffffffffffffffaa)。