class String
def crc16
crcnum=0xFFFF
self.each_byte do |b|
crcnum=crcnum^((b.to_i)&0x00ff)
1.upto(8) do
if (crcnum&0x0001)!=0 then
crcnum=(crcnum>>1)^0x8408
else
crcnum=crcnum>>1
end
end
end
crcnum
sprintf("%02X %02X", crcnum & 0xFF, crcnum >> 8)
end
def hex2str
str = ''
self.each_byte do |b|
str = str + sprintf("%02X", b) + ' '
end
str
end
def str2hex
ss, chr = "", "\000"
code = self.split(" ")
for k in 0..code.size-1
chr[0] = code[k].to_i(16)
ss = ss + chr
end
ss
end