class MrbParser::CRC
calculate CRC
an Ruby port of src/crc.c in mruby
Constants
- CHAR_BIT
- CRC_16_CCITT
- CRC_CARRY_BIT
- CRC_XOR_PATTERN
Public Class Methods
calc_crc_16_ccitt(data0, nbytes, crc)
click to toggle source
# File lib/mrb_parser/crc.rb, line 15 def self.calc_crc_16_ccitt(data0, nbytes, crc) data = data0.unpack("C*") crcwk = crc << 8 for ibyte in 0...nbytes crcwk |= data[ibyte] for ibit in 0...CHAR_BIT crcwk <<= 1 carry = crcwk & CRC_CARRY_BIT if carry.nonzero? crcwk ^= CRC_XOR_PATTERN end end end return crcwk >> 8 end