Qt中的QByteArray转换

问题描述 投票:-1回答:1
QByteArray x;

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

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

c++ qt
1个回答
1
投票

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

您意外输出的原因是7 overloadsQString::number,所有这些都与第一个参数的类型不同。支持的类型是longuintintuintqlonglongqulonglongdouble。所有处理整数类型的重载都是implemented by调用return number(qlonglong(n), base);return number(qulonglong(n), base);

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

© www.soinside.com 2019 - 2024. All rights reserved.