python - 在 Python 中计算浮点数数组的 crc32 校验和
问题描述
我正在尝试在 Python 中计算浮点数数组的 crc32 校验和,然后将其与 C++ 中计算的 crc32 校验和进行比较,对于单个浮点数,我正在使用以下代码:
crc =binascii.crc32(binascii.a2b_hex(float_to_hex(386.18758683282005)[2:]))
和
def float_to_hex(f):
return hex(struct.unpack('<I', struct.pack('<f', f))[0])
这给出597302619
了和我在 C++ 中得到的相同的校验和。但我还需要计算 Python 中浮点数组的 crc32 校验和。
代码应该如何获取数组的 crc32 校验和?我尝试添加每个浮点数的校验和,但这给出了错误的校验和
解决方案
只需对每个数字重复,使用最后一个 CRC 作为 next 的第二个参数crc32()
。所以像:
crc = binascii.crc32(firststring)
crc = binascii.crc32(nextstring, crc)
...
crc = binascii.crc32(laststring, crc)
鉴于评论中的示例数组,我在交互式 Python 3 中得到了这个:
>>> import binascii
>>> import struct
>>> c = 0
>>> for x in a:
... c = binascii.crc32(binascii.a2b_hex(float_to_hex(x)[2:]), c)
...
>>> c
702039990
如果这些浮点数以大端顺序存储在内存中,这将是您将该浮点数组的 CRC-32 作为字节序列获得的结果。
推荐阅读
- java - 从 RecyclerView Adapter 中的 Room Persistence 库中查询数据
- ios - 使用自定义 UITableViewCells 并使用 Swift 数组复制它们
- javascript - firebase 云功能不更新数据
- c# - ML.NET IDataView 返回 csv
- ruby-on-rails - 我从延迟的作业中得到重复的插入到数据库表中
- javascript - Javascript 又神秘了?
- java - 更改 dataTable 选择 JSF 2.2/ Primefaces 上的 inputText
- angular - Angular 6中的过期时间倒计时
- certificate - 如何从 PKCS12 密钥库更改密钥密码
- python - 仅使用 predict() 或 predict_on_batch() 预测批次中的单个时间序列样本