File: dumb_crc32.py

package info (click to toggle)
hackrf 2024.02.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 36,692 kB
  • sloc: ansic: 56,310; xml: 3,424; perl: 2,730; python: 1,427; makefile: 598; asm: 514; vhdl: 319; sh: 179; awk: 20
file content (22 lines) | stat: -rw-r--r-- 582 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

class DumbCRC32(object):
	def __init__(self):
		self._remainder = 0xffffffff
		self._reversed_polynomial = 0xedb88320
		self._final_xor = 0xffffffff

	def update(self, data):
		bit_count = len(data) * 8
		for bit_n in range(bit_count):
			bit_in = data[bit_n >> 3] & (1 << (bit_n & 7))
			self._remainder ^= 1 if bit_in != 0 else 0
			bit_out = (self._remainder & 1)
			self._remainder >>= 1;
			if bit_out != 0:
				self._remainder ^= self._reversed_polynomial;

	def digest(self):
		return self._remainder ^ self._final_xor

	def hexdigest(self):
		return '%08x' % self.digest()