與Java中hashcode函數結果一致的Python獲取hashcode


class GetHashCode:

    def convert_n_bytes(self,n, b):
        bits = b*8
        return (n + 2**(bits-1)) % 2**bits - 2**(bits-1)

    def convert_4_bytes(self,n):
        return self.convert_n_bytes(n, 4)
    @classmethod
    def getHashCode(cls,s):
        h = 0
        n = len(s)
        for i, c in enumerate(s):
            h = h + ord(c)*31**(n-1-i)
        return cls().convert_4_bytes(h)

if __name__ == "__main__":
    hashCode=GetHashCode.getHashCode("qwerty")
    print(hashCode)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章