作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将包含十六进制格式值的 QByteArray
转换为 long long
:
QByteArray field = "A8BC301F0193E83F";
bool ok;
qlonglong val = field.toLongLong(&ok, 16);
qDebug() << ok << val;
输出:
false 0
相反,我期待 val = -6.288.098.069.987.465.153。
为什么会失败?文档没有说明此功能的任何限制。
我忘了在源代码中提到数据顺序是小端。
最佳答案
您的数字超出了 signed long long
的限制,因此转换失败。
您可以使用 QByteArray::toULongLong
相反,然后转换为 long long
。
#include <qbytearray.h>
#include <qdebug.h>
int main(int argc, char* argv[])
{
QByteArray field = "A8BC301F0193E83F";
bool ok;
qlonglong val = field.toLongLong(&ok, 16);
qDebug() << ok << val;
qulonglongval_u = field.toULongLong(&ok, 16);
qDebug() << ok << val_u << (long long)val_u;
long long check = 0xA8BC301F0193E83F;
qDebug() << check;
return 0;
}
编辑:您可以查看 source code相关的辅助函数,并看到这确实是有符号整数和无符号整数之间的情况。
关于c++ - Qt5:toLongLong 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51204797/
Qt 5.4.1,Linux 64 位。示例代码: int main(int argc, char** argv) { QString a = "FFFFFFFFFFFFFFFF";
我正在尝试将包含十六进制格式值的 QByteArray 转换为 long long: QByteArray field = "A8BC301F0193E83F"; bool ok; qlonglong
我是一名优秀的程序员,十分优秀!