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