Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用c+打印十六进制格式的散列数据+;_C++_Types_Io - Fatal编程技术网

C++ 用c+打印十六进制格式的散列数据+;

C++ 用c+打印十六进制格式的散列数据+;,c++,types,io,C++,Types,Io,我正在使用xxHash库进行一些测试: 我下面的代码有问题。哈希已计算并存储在一个类中: uint64_t hash_data = i.get_hash(); const auto *p = (const unsigned char*) hash_data; 当试图以十六进制格式打印我的哈希时,我无法让它工作。有人能帮我弄清楚吗 我试过用sizeof(p)和strlen(p)循环,但似乎都以seg故障结束。我认为这个无符号字符不会有空终止符,对吗?。我对其他人的代码做过研究,但我似乎仍然无

我正在使用xxHash库进行一些测试:

我下面的代码有问题。哈希已计算并存储在一个类中:

 uint64_t hash_data = i.get_hash();
 const auto *p = (const unsigned char*) hash_data;
当试图以十六进制格式打印我的哈希时,我无法让它工作。有人能帮我弄清楚吗


我试过用
sizeof(p)
strlen(p)
循环,但似乎都以seg故障结束。我认为这个无符号字符不会有空终止符,对吗?。我对其他人的代码做过研究,但我似乎仍然无法找出将此哈希打印为十六进制的最简单方法。

除非保证这是一个C字符串,
strlen
不适用
sizeof(p)
是指针的大小,而不是指针指向的数据量。如果这只是一个64位的值,那么只需迭代8个字节,.Ah。您需要
const auto*p=(const unsigned char*)&hash\u数据(注意符号and),然后遍历8个字节。如前所述,您没有读取表示为
散列\u数据的8个字节
——您将
散列\u数据
视为内存中的一个地址,并尝试在该地址读取8个字节。当然,
hash_数据
并不表示内存中的有效地址。您从
std::cout
printf(“%llX\n”,hash_数据)得到什么输出strlen
不适用
sizeof(p)
是指针的大小,而不是指针指向的数据量。如果这只是一个64位的值,那么只需迭代8个字节,.Ah。您需要
const auto*p=(const unsigned char*)&hash\u数据(注意符号and),然后遍历8个字节。如前所述,您没有读取表示为
散列\u数据的8个字节
——您将
散列\u数据
视为内存中的一个地址,并尝试在该地址读取8个字节。当然,
hash_数据
并不表示内存中的有效地址。您从
std::cout
printf(“%llX\n”,hash_数据)得到什么输出