かなり奇妙な問題があります。分散ハッシュ テーブルの場合、MD5 ハッシュに対して簡単な数学演算を実行できる必要があります。これらには、合計 (ハッシュで表される数値の合計) とモジュロ演算が含まれます。今、これらの操作を実装する最良の方法は何だろうと思っています。hashlib を使用してハッシュを計算していますが、取得したハッシュは文字列であるため、どのように計算すればよいでしょうか?
8954 次
1 に答える
35
このhexdigest()
メソッドを使用して 16 進数を取得し、それらを数値に変換できます。
>>> h = hashlib.md5('data')
>>> int(h.hexdigest(), 16)
188041611063492600696317361555123480284L
の出力が既にある場合はdigest()
、それを 16 進数に変換できます。
>>> hexDig = ''.join('%02x' % ord(x) for x in h.digest())
>>> int(hexDig, 16)
188041611063492600696317361555123480284L
編集:
2 番目のケースでは、実際には.encode('hex')
orを使用して変換する方が簡単binascii.hexlify
です。
>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
于 2010-04-24T00:52:48.797 に答える