小编bal*_*bin的帖子

复制python和node.js中java.lang.String.hashCode()的输出的函数

我正在尝试实现一个函数来生成等效于node.js和python的java hashCode,以实现Redis分片。我正在关注下面提到的非常好的博客@链接,以实现此 http://mechanics.flite.com/blog/2013/06/27/sharding-redis/

但是如果字符串包含一些不像下面的示例那样的ascii字符,我会陷入hashCode的差异。对于常规字符串,我可以同时将node.js和python给我相同的哈希码。

这是我用来生成此代码:

- 蟒蛇

def _java_hashcode(s):
    hash_code = 0
    for char in s:
        hash_code = 31*h + ord(char)

    return ctypes.c_int32(h).value   
Run Code Online (Sandbox Code Playgroud)

-根据上述博客的节点

String.prototype.hashCode = function() {
  for(var ret = 0, i = 0, len = this.length; i < len; i++) {
    ret = (31 * ret + this.charCodeAt(i)) << 0;
  }
  return ret;
};
Run Code Online (Sandbox Code Playgroud)

--Python输出

For string '?:s??2?*?=x?' hash is = 2014651066
For string '359196048149234' hash is = 1145341990
Run Code Online (Sandbox Code Playgroud)

-节点输出

For string '?:s??2?*?=x?' hash is = 150370768
For …
Run Code Online (Sandbox Code Playgroud)

javascript python hashcode redis node.js

5
推荐指数
2
解决办法
1467
查看次数

标签 统计

hashcode ×1

javascript ×1

node.js ×1

python ×1

redis ×1