gpt4 book ai didi

c++ - Qt5:toLongLong 失败

转载 作者:行者123 更新时间:2023-11-30 02:19:07 25 4
gpt4 key购买 nike

我正在尝试将包含十六进制格式值的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com