Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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:使用xor和移位寄存器的CRC实现_Python_Hardware_Xor_Crc - Fatal编程技术网

Python:使用xor和移位寄存器的CRC实现

Python:使用xor和移位寄存器的CRC实现,python,hardware,xor,crc,Python,Hardware,Xor,Crc,我试图用CRC生成器100101实现5位CRC。 然而,该代码并不反映CRC中的硬件异或和移位寄存器; 在硬件层面,我们有以下几点: 如何在python上实现这一点 作为澄清,我想知道是否有一些代码处理按位异或和移位运算符我不确定你在问什么-到目前为止,你的代码看起来不错,正如你所说,它给出了正确的结果 我可以向您指出标准库中的数据结构,我发现它对于表示移位寄存器非常有用,因为它提供了旋转方法来精确执行这种循环移位 此代码给出的结果与您的代码相同: from collections import

我试图用CRC生成器100101实现5位CRC。 然而,该代码并不反映CRC中的硬件异或和移位寄存器; 在硬件层面,我们有以下几点:

如何在python上实现这一点


作为澄清,我想知道是否有一些代码处理按位异或和移位运算符我不确定你在问什么-到目前为止,你的代码看起来不错,正如你所说,它给出了正确的结果

我可以向您指出标准库中的数据结构,我发现它对于表示移位寄存器非常有用,因为它提供了旋转方法来精确执行这种循环移位

此代码给出的结果与您的代码相同:

from collections import deque

deque_crc = deque([0,0,0,0,0],maxlen=5)

myID.extend(deque_crc)

for x in myID:
    deque_crc.rotate(-1)
    deque_crc[2] = (deque_crc[2] + deque_crc[4]) % 2
    deque_crc[4] = (deque_crc[4] + x) % 2

myID[-5:] = deque_crc

print myID
编辑:

由于您要求按位实现该算法,您可能希望签出这些源:


我不确定你在问什么——到目前为止,你的代码看起来还不错,正如你所说的,它给出了正确的结果

我可以向您指出标准库中的数据结构,我发现它对于表示移位寄存器非常有用,因为它提供了旋转方法来精确执行这种循环移位

此代码给出的结果与您的代码相同:

from collections import deque

deque_crc = deque([0,0,0,0,0],maxlen=5)

myID.extend(deque_crc)

for x in myID:
    deque_crc.rotate(-1)
    deque_crc[2] = (deque_crc[2] + deque_crc[4]) % 2
    deque_crc[4] = (deque_crc[4] + x) % 2

myID[-5:] = deque_crc

print myID
编辑:

由于您要求按位实现该算法,您可能希望签出这些源:


如果您想真正使用CRC代码,而不是研究它们的实现,您可能会发现该模块非常有用。我已经使用它多年了,它很容易使用。只需输入多项式,并准备好一个CRC函数来处理数据


但是,它可能不支持5位CRC多项式。

如果您想真正使用CRC代码而不是研究其实现,您可能会发现该模块非常有用。我已经使用它多年了,它很容易使用。只需输入多项式,并准备好一个CRC函数来处理数据

但是,它可能不支持5位CRC多项式

然而,该代码并不反映CRC中的硬件异或和移位寄存器

是的

这:

是移位寄存器的一个模型

Something+1%2是表示XOR操作的一种方法

我认为你已经相当准确地模拟了你展示的图表

然而,该代码并不反映CRC中的硬件异或和移位寄存器

是的

这:

是移位寄存器的一个模型

Something+1%2是表示XOR操作的一种方法


我认为你已经相当准确地模拟了你展示的图表

谢谢!作为澄清,我想知道是否有一些代码处理位异或和移位运算符谢谢!作为澄清,我想知道是否有一些代码处理按位异或和移位运算符