首页 > 解决方案 > 如何将以下代码转换为 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;
}

标签: pythoncchecksum

解决方案


给定 Python 3 和dataas bytes,您可以获得无符号字节的整数和 as sum(data)。结果不是 16 位而是无限精度整数。然后您可以反转它 - 这将产生无限精度的 sum 的补码,这将是一个负整数然后使用二进制 AND 钳制到 16 位。鉴于代码是

def checksum(data: bytes) -> int:
    return (~sum(data)) & 0xFFFF 

推荐阅读