Python Crc32 介绍
本篇文章将介绍使用 Python 中的 binascii 或 zlib 库计算数据的 crc32。
Python CRC32
CRC32 是数据的校验和,也称为循环冗余校验,用于检查数据的数字传输中存在的错误。 在数字传输中,由于噪声或干扰,输出端的数据可能会相对于输入端的数据发生变化,为了检查传输输出端的数据是否发生变化,我们可以使用CRC32来找出差异 输入和输出数据的校验和。
如果数据的输入和输出校验和之差为零,则传输没有错误,输出端的数据与传输输入端的数据相同。 数据校验和表示存在的位数,并在发送前附加到文件。
我们已经知道输入数据的校验和,我们只需要找到输出数据的校验和,它们的差异将告诉我们数据中存在的错误。 我们可以使用 binascii 或 zlib()
库的 crc32()
函数来查找数据的 CRC32 或校验和。
我们必须在 crc32()
函数中以字节为单位传递数据,该函数将返回该数据的 32 位无符号整数。 如果输入数据不是字节数据类型,我们必须先将其转换为字节,然后再将其传递到 crc32()
函数中。
如果 crc32()
函数内部传递的输入值为零,则输出也将为零。 例如,让我们使用 binascii 和 zlib 库来查找字符串的 CRC32 校验和。
请参阅下面的代码。
import binascii
import zlib
crc1 = binascii.crc32(b'abcd')
crc2 = zlib.crc32(b'abcd')
print(crc1)
print(crc2)
Output:
3984772369
3984772369
在上面的代码中,我们在 crc32()
函数中使用了字符 b 来将字符串转换为字节。 用于查找校验和的算法不是加密算法并且不太准确,因此不能用于哈希目的。
上面的代码在Python 3中测试,会返回32位无符号整数,但是如果我们在Python 2中运行相同的代码,结果将是一个32位有符号整数,两者的结果是不一样的。 要将 Python 2 的结果转换为无符号的,我们必须使用 & 字符对输出与 0xffffffff 进行按位与运算。
binascii 库可以将数据从二进制转换为 ASCII,就像二进制到十六进制一样。 它可以使用其 b2a_hex() 函数将上述字节值转换为十六进制。
zlib 库可以压缩和解压缩数据。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串