我在处理这段代码时遇到了一些问题。QByteArray::number 应该从哈希中获取 QByteArray 并将其转换为十六进制,但结果比我预期的要短得多。我在想两个输出应该是一样的。我认为这与指针转换有关,但我不明白该转换做得好到足以看到如何进行价值。
谁能解释为什么这两行输出不同的结果?最好在数学方面。
代码
QCryptographicHash hash(QCryptographicHash::Sha1);
hash.addData("some string to hash");
qDebug() << QByteArray::number(*(qlonglong*)hash.result().data(), 16);
qDebug() << hash.result().toHex();
输出:
"89bde3ca56c83c47"
"473cc856cae3bd89e43ff9f62963d6f38372ccbd"
预期输出:
"473cc856cae3bd89e43ff9f62963d6f38372ccbd"
"473cc856cae3bd89e43ff9f62963d6f38372ccbd"
注意:我的实际问题是以 36 为基数,而不是 16,但是有一个方便的 .toHex 方法可以使这更容易显示。