根据我以十六进制形式打印整数值的方式,我会得到具有不同字节序的结果
以下代码:
#include <QCoreApplication>
#include <QDebug>
template<class T>
QByteArray numToHex( T number ) // converts any number to hex format
{
return QByteArray( (const char*)&number, sizeof(T) ).toHex();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
quint64 hash64 = 18144624926692707313;
qDebug() << "<< hex << hash64: " << hex << hash64;
qDebug() << "numToHex(hash64):" << numToHex(hash64);
return a.exec();
}
//this is the result:
<< hex << hash64: fbcea83c8a378bf1
numToHex(hash64): "f18b378a3ca8cefb"
两个结果的固有性不同,为什么? 无论如何我都没有设置耐力,所以它们应该相同!
答案 0 :(得分:0)
区别在于,在一种情况下,您将转到一个外部库,并为其提供一个64位整数(一个特定字节)的地址,并要求它根据该地址处的数据构造一个特定的类。然后,您要求该类将其内容输出为“十六进制”(实际上是字符串)。两种技术是否产生相同的结果将取决于第一个字节(您传递给numToHex
的地址)实际上是qint64
的最高有效字节还是最低字节...换句话说,您的结果取决于平台的字节序。