class Digest::CRC16QT

Implements the CRC16_CCITT algorithm used in QT algorithms.

@author Matthew Bednarski

Constants

FINAL_XOR

Public Instance Methods

checksum() click to toggle source

Calculates the CRC checksum value.

@return [Integer]

Calls superclass method Digest::CRC::checksum
# File lib/digest/crc16_qt.rb, line 33
def checksum
  crc = super
  crc ^= FINAL_XOR
  crc = revert_bits(crc)
  return crc
end
update(data) click to toggle source

Updates the CRC16 checksum.

@param [String] data

The data to update the checksum with.
# File lib/digest/crc16_qt.rb, line 19
def update(data)
  data.each_byte do |b|
    b = revert_byte(b)
    @crc = ((@table[((@crc >> 8) ^ b) & 0xff] ^ (@crc << 8)) & 0xffff)
  end

  return self
end

Protected Instance Methods

revert_bits(cc) click to toggle source
# File lib/digest/crc16_qt.rb, line 42
def revert_bits(cc)
  ob = 0
  b  = (1 << 15)

  16.times do |t|
    ob |= (1 << t) if (cc & b) != 0
    b >>= 1
  end

  return ob
end
revert_byte(cc) click to toggle source
# File lib/digest/crc16_qt.rb, line 54
def revert_byte(cc)
  ob = 0
  b  = (1 << 7)

  8.times do |t|
    ob |= (1 << t) if (cc & b) != 0
    b >>= 1
  end

  return ob
end