迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python Crc32 介绍

作者:迹忆客 最近更新:2023/06/01 浏览次数:

本篇文章将介绍使用 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 库可以压缩和解压缩数据。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便