| Index: grit/extern/FP.py
|
| ===================================================================
|
| --- grit/extern/FP.py (revision 0)
|
| +++ grit/extern/FP.py (revision 0)
|
| @@ -0,0 +1,34 @@
|
| +#!/usr/bin/python
|
| +# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +try:
|
| + import hashlib
|
| + _new_md5 = hashlib.md5
|
| +except ImportError:
|
| + import md5
|
| + _new_md5 = md5.new
|
| +
|
| +"""64-bit fingerprint support for strings.
|
| +
|
| +Usage:
|
| + from extern import FP
|
| + print 'Fingerprint is %ld' % FP.FingerPrint('Hello world!')
|
| +"""
|
| +
|
| +
|
| +def UnsignedFingerPrint(str, encoding='utf-8'):
|
| + """Generate a 64-bit fingerprint by taking the first half of the md5
|
| + of the string."""
|
| + hex128 = _new_md5(str).hexdigest()
|
| + int64 = long(hex128[:16], 16)
|
| + return int64
|
| +
|
| +def FingerPrint(str, encoding='utf-8'):
|
| + fp = UnsignedFingerPrint(str, encoding=encoding)
|
| + # interpret fingerprint as signed longs
|
| + if fp & 0x8000000000000000L:
|
| + fp = - ((~fp & 0xFFFFFFFFFFFFFFFFL) + 1)
|
| + return fp
|
| +
|
|
|
| Property changes on: grit/extern/FP.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|