QByteArray x;
x[0] = 0xAA;
qDebug() << QString::number(x[0] , 16);
我在调试屏幕上看到了ffffffffffffffaa
。我认为QBteArray
是签名char。那么如何正确地将这些数据存储在QByteArray
中,或者如何将数据转换并保存到无符号变量?
数据存储正确,您可以通过直接打印数组x
的内容来检查,而不使用QString::number
(即qDebug() << x;
),这应输出:"\xAA"
。
您意外输出的原因是7 overloads有QString::number
,所有这些都与第一个参数的类型不同。支持的类型是long
,uint
,int
,uint
,qlonglong
,qulonglong
和double
。所有处理整数类型的重载都是implemented by调用return number(qlonglong(n), base);
或return number(qulonglong(n), base);
。
这就是为什么你传递给char
的QString::number
被视为qlonglong
(即x[0] = 0xAA
,这意味着x[0] = -86
,然后这个值转换为qlonglong
因此QString::number
返回ffffffffffffffaa
)。