⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc32_in_ruby.rb

📁 CRC校验采用多项式编码方法。多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模
💻 RB
字号:
module Digest
  class CRC32InRuby
    def initialize(str = nil)
      @crc = 0xFFFFFFFF
      update(str) if str
    end

    def hexdigest
      "%08x" % (@crc ^ 0xFFFFFFFF)
    end

    def digest
      [@crc ^ 0xFFFFFFFF].pack("N")
    end

    def update(str)
      str.each_byte do |b|
	@crc = ((@crc >> 8) & 0x00FFFFFF) ^ CRC_TABLE[((@crc ^ b) & 0xff)]
      end
      self
    end

    alias_method :<<, :update

    def CRC32InRuby.hexdigest(str)
      CRC32.new.update(str).hexdigest
    end

    def CRC32InRuby.generate_crc_table
      table = Array.new(256)
      256.times do |i|
	crc = i
	8.times do
	  if (crc & 1) == 1
	    crc = (crc >> 1) ^ 0xEDB88320
	  else
	    crc = crc >> 1
	  end
	end
	table[i] = crc
	# puts "#{i}: %x" % crc
      end
      table
    end

    CRC_TABLE = generate_crc_table
  end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -