Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将下面的代码转换为python代码,这是用于校验和的。请有人能给我一些方向,学习一些东西来实现这一点_Python_C_Checksum - Fatal编程技术网

如何将下面的代码转换为python代码,这是用于校验和的。请有人能给我一些方向,学习一些东西来实现这一点

如何将下面的代码转换为python代码,这是用于校验和的。请有人能给我一些方向,学习一些东西来实现这一点,python,c,checksum,Python,C,Checksum,我是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

我是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;
}
unit16\u t CheckSum1ByteIn2ByteOut(unit8\u t*data,int len)
{
第16单元校验和=0;
断言(Null!=数据);
对于(int i=0;i
给定Python3和
数据作为
字节
,可以将无符号字节的整数和作为
总和(数据)
。结果不是16位,而是无限精度整数。然后你可以反转这个-这将导致无限精度的一的总和的补充,这将是一个负整数,然后钳位到16位与二进制和。鉴于代码是

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

Python代码看起来几乎完全一样,所以我建议您先自己尝试一下……谢谢您的回复,我无法做到这一点,因为我不知道Nor(按位操作)的相对函数,当我尝试添加十六进制并自己做时,我无法得到结果。请向我提供一些参考/文档,以便我能够做到这一点,谢谢:)如果按位不是,那么您唯一的问题就是重复。@mechbaral:其中没有NOR,但按位反转是同一个运算符(
~
)。您需要在它后面加上掩码,以强制它返回到一个16位无符号整数,仅此而已。@thebjorn我的看起来几乎完全一样吗?