python - 如何将以下代码转换为 python 代码,用于校验和。请有人可以给我一些方向来学习一些东西来实现这一目标
问题描述
我是 python 新手,想将 C 中的一个代码更改为 python。有人可以指导我吗?这是作为校验和代码。
unit16_t CheckSum1ByteIn2ByteOut(unit8_t* data, int len)
{
unit16_t checksum = 0;
ASSERT(Null != data);
for(int i = 0;i < len; i++)
{
checksum +=data[i];
}
checksum = ~checksum;
return checksum;
}
解决方案
给定 Python 3 和data
as bytes
,您可以获得无符号字节的整数和 as sum(data)
。结果不是 16 位而是无限精度整数。然后您可以反转它 - 这将产生无限精度的 sum 的补码,这将是一个负整数,然后使用二进制 AND 钳制到 16 位。鉴于代码是
def checksum(data: bytes) -> int:
return (~sum(data)) & 0xFFFF
推荐阅读
- php - 我想用 codeigniter 中的登录时间更新 jwt 令牌
- sql - 对索引列执行多个查询时,表是否被锁定?
- javascript - 加载资源失败:服务器响应状态为 404(), Deploy with github pages
- c# - 如何对带有硬编码参数的方法进行单元测试?
- mysql - 如何在 MySQL 中做到这一点?
- python - 如何在python中按下按钮进行冷却
- mysql - 通过 SQL 语句的 Moodle-Enrolement-Course-Information
- temporal-workflow - 时间:何时以及如何使用本地活动?
- docker - 两个docker都可以设置主机网络模式吗?
- c# - ItemsControl ItemTemplate DataTemplate 触发器未触发