如何将下面的代码转换为python代码,这是用于校验和的。请有人能给我一些方向,学习一些东西来实现这一点
我是python新手,希望将C中的一段代码更改为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
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我的看起来几乎完全一样吗?