📄 crc32_in_ruby.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 + -