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