print binascii.crc32("hello world")
# Or, in two pieces:
crc = binascii.crc32("hello")
- crc = binascii.crc32(" world", crc)
- print crc
+ crc = binascii.crc32(" world", crc) & 0xffffffff
+ print 'crc32 = 0x%08x' % crc
+
+.. note::
+ To generate the same numeric value across all Python versions and
+ platforms use crc32(data) & 0xffffffff. If you are only using
+ the checksum in packed binary format this is not necessary as the
+ return value will have the correct 32bit binary representation
+ regardless of sign.
+
+.. versionchanged:: 2.6
+ The return value will always be in the range [-2**31, 2**31-1]
+ regardless of platform. In the past the value would be signed on
+ some platforms and unsigned on others. Use & 0xffffffff on the
+ value if you want it to match 3.0 behavior.
+
+.. versionchanged:: 3.0
+ The return value will always be unsigned and in the range [0, 2**32-1]
+ regardless of platform.
.. function:: b2a_hex(data)
Exception raised on compression and decompression errors.
-.. function:: adler32(string[, value])
+.. function:: adler32(data[, value])
- Computes a Adler-32 checksum of *string*. (An Adler-32 checksum is almost as
+ Computes a Adler-32 checksum of *data*. (An Adler-32 checksum is almost as
reliable as a CRC32 but can be computed much more quickly.) If *value* is
present, it is used as the starting value of the checksum; otherwise, a fixed
default value is used. This allows computing a running checksum over the
- concatenation of several input strings. The algorithm is not cryptographically
+ concatenation of several inputs. The algorithm is not cryptographically
strong, and should not be used for authentication or digital signatures. Since
the algorithm is designed for use as a checksum algorithm, it is not suitable
for use as a general hash algorithm.
This function always returns an integer object.
- .. versionchanged:: 2.6
- For consistent cross-platform behavior we always return a signed integer.
- ie: Results in the (2**31)...(2**32-1) range will be negative.
+.. note::
+ To generate the same numeric value across all Python versions and
+ platforms use adler32(data) & 0xffffffff. If you are only using
+ the checksum in packed binary format this is not necessary as the
+ return value will have the correct 32bit binary representation
+ regardless of sign.
+
+.. versionchanged:: 2.6
+ The return value will always be in the range [-2**31, 2**31-1]
+ regardless of platform. In older versions the value would be
+ signed on some platforms and unsigned on others.
+
+.. versionchanged:: 3.0
+ The return value will always be unsigned and in the range [0, 2**32-1]
+ regardless of platform.
.. function:: compress(string[, level])
``9`` is slowest and produces the most. The default value is ``6``.
-.. function:: crc32(string[, value])
+.. function:: crc32(data[, value])
.. index::
single: Cyclic Redundancy Check
single: checksum; Cyclic Redundancy Check
- Computes a CRC (Cyclic Redundancy Check) checksum of *string*. If *value* is
+ Computes a CRC (Cyclic Redundancy Check) checksum of *data*. If *value* is
present, it is used as the starting value of the checksum; otherwise, a fixed
default value is used. This allows computing a running checksum over the
- concatenation of several input strings. The algorithm is not cryptographically
+ concatenation of several inputs. The algorithm is not cryptographically
strong, and should not be used for authentication or digital signatures. Since
the algorithm is designed for use as a checksum algorithm, it is not suitable
for use as a general hash algorithm.
This function always returns an integer object.
- .. versionchanged:: 2.6
- For consistent cross-platform behavior we always return a signed integer.
- ie: Results in the (2**31)...(2**32-1) range will be negative.
+.. note::
+ To generate the same numeric value across all Python versions and
+ platforms use crc32(data) & 0xffffffff. If you are only using
+ the checksum in packed binary format this is not necessary as the
+ return value will have the correct 32bit binary representation
+ regardless of sign.
+
+.. versionchanged:: 2.6
+ The return value will always be in the range [-2**31, 2**31-1]
+ regardless of platform. In older versions the value would be
+ signed on some platforms and unsigned on others.
+
+.. versionchanged:: 3.0
+ The return value will always be unsigned and in the range [0, 2**32-1]
+ regardless of platform.
.. function:: decompress(string[, wbits[, bufsize]])