我正在编写一个python程序来查找文件。该文件是由 C++ 程序创建的,文件名带有哈希值 ( std::hash<std::string> hash_fn )。
我知道创建散列的字符串,但我找不到产生相同散列的 python 散列函数(我尝试了 hash() 并且都在 hashlib 中)。
例如,字符串

file:///home/ubuntu/Untitled.skp

应该给出哈希:

3133433022

不幸的是,我无法控制 C++ 程序,只能控制 Python 脚本(或最终的 Python 扩展)。
是否可以找到或实现 C++ 使用的相同哈希函数?或者我应该尝试另一种方法?

最佳答案

在大多数情况下,内部散列函数如 C++ 中的 std::hash
Python 哈希函数不是为外部使用而设计的。当你在
设计这样的系统,严格指定使用的哈希函数,以及
在两个系统中实现它。

如果为时已晚,并且您已经使用了 std::hash ,那么
你所能做的就是找到它的来源(这取决于
编译器,可能不可用),对它们进行反向工程以找到散列
使用的算法,将其指定为您的散列,并以任何方式重新实现它
需要的语言。 (您需要在自己的代码中实现它,因为
它可能会在编译器的下一个版本中发生变化。)

关于c++ - python <=> C++ 跨语言散列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12623111/

10-12 22:24