lib/digest/crc16_qt.rb in digest-crc-0.6.0.rc1 vs lib/digest/crc16_qt.rb in digest-crc-0.6.0

- old
+ new

@@ -1,67 +1,10 @@ -require 'digest/crc16_ccitt' +require 'digest/crc16_x_25' module Digest # # Implements the CRC16_CCITT algorithm used in QT algorithms. # - # @author Matthew Bednarski + # @note Is exactly the same as the CRC16 X-25 algorithm. # - class CRC16QT < CRC16CCITT - - FINAL_XOR = 0xffff - - # - # Updates the CRC16 checksum. - # - # @param [String] data - # The data to update the checksum with. - # - 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 - - # - # Calculates the CRC checksum value. - # - # @return [Integer] - # - def checksum - crc = super - crc ^= FINAL_XOR - crc = revert_bits(crc) - return crc - end - - protected - - 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 - - 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 - - end + CRC16QT = CRC16X25 end