【发布时间】:2018-07-06 07:06:39
【问题描述】:
我正在尝试将包含十六进制格式值的QByteArray 转换为long long:
QByteArray field = "A8BC301F0193E83F";
bool ok;
qlonglong val = field.toLongLong(&ok, 16);
qDebug() << ok << val;
输出:
假0
相反,我期待 val = -6.288.098.069.987.465.153。
为什么会失败?文档没有说明此功能的任何限制。
我忘了提到源中的数据顺序是小端。
【问题讨论】:
-
要获得预期的输出,您需要像
QByteArray field = "-5743CFE0FE6C17C1";这样写,不是吗?不过,您的A8BC301F0193E83F数字表示该数字的十六进制符号二进制补码。 -
“字段”变量应该包含数字的位表示。是应该处理标志的转换(如果有的话)。我错了吗?