Created
December 6, 2013 19:27
-
-
Save maxlapshin/7830701 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-module(crc17). | |
-export([calc/1]). | |
calc(List) -> calc(List,16#FFFF). | |
calc(<<>>,CRC) -> | |
CRC; | |
calc(<<Value:8,Rest/binary>>,CRC) -> | |
Index = (CRC bxor Value) band 255, | |
NewCRC = (CRC bsr 8) bxor crc_index(Index), | |
calc(Rest,NewCRC). | |
crc_index(0) -> 16#0000; | |
crc_index(1) -> 16#C0C1; | |
crc_index(2) -> 16#C181; | |
crc_index(3) -> 16#0140; | |
crc_index(4) -> 16#C301; | |
crc_index(5) -> 16#03C0; | |
crc_index(6) -> 16#0280; | |
crc_index(7) -> 16#C241; | |
crc_index(8) -> 16#C601; | |
crc_index(9) -> 16#06C0; | |
crc_index(10) -> 16#0780; | |
crc_index(11) -> 16#C741; | |
crc_index(12) -> 16#0500; | |
crc_index(13) -> 16#C5C1; | |
crc_index(14) -> 16#C481; | |
crc_index(15) -> 16#0440; | |
crc_index(16) -> 16#CC01; | |
crc_index(17) -> 16#0CC0; | |
crc_index(18) -> 16#0D80; | |
crc_index(19) -> 16#CD41; | |
crc_index(20) -> 16#0F00; | |
crc_index(21) -> 16#CFC1; | |
crc_index(22) -> 16#CE81; | |
crc_index(23) -> 16#0E40; | |
crc_index(24) -> 16#0A00; | |
crc_index(25) -> 16#CAC1; | |
crc_index(26) -> 16#CB81; | |
crc_index(27) -> 16#0B40; | |
crc_index(28) -> 16#C901; | |
crc_index(29) -> 16#09C0; | |
crc_index(30) -> 16#0880; | |
crc_index(31) -> 16#C841; | |
crc_index(32) -> 16#D801; | |
crc_index(33) -> 16#18C0; | |
crc_index(34) -> 16#1980; | |
crc_index(35) -> 16#D941; | |
crc_index(36) -> 16#1B00; | |
crc_index(37) -> 16#DBC1; | |
crc_index(38) -> 16#DA81; | |
crc_index(39) -> 16#1A40; | |
crc_index(40) -> 16#1E00; | |
crc_index(41) -> 16#DEC1; | |
crc_index(42) -> 16#DF81; | |
crc_index(43) -> 16#1F40; | |
crc_index(44) -> 16#DD01; | |
crc_index(45) -> 16#1DC0; | |
crc_index(46) -> 16#1C80; | |
crc_index(47) -> 16#DC41; | |
crc_index(48) -> 16#1400; | |
crc_index(49) -> 16#D4C1; | |
crc_index(50) -> 16#D581; | |
crc_index(51) -> 16#1540; | |
crc_index(52) -> 16#D701; | |
crc_index(53) -> 16#17C0; | |
crc_index(54) -> 16#1680; | |
crc_index(55) -> 16#D641; | |
crc_index(56) -> 16#D201; | |
crc_index(57) -> 16#12C0; | |
crc_index(58) -> 16#1380; | |
crc_index(59) -> 16#D341; | |
crc_index(60) -> 16#1100; | |
crc_index(61) -> 16#D1C1; | |
crc_index(62) -> 16#D081; | |
crc_index(63) -> 16#1040; | |
crc_index(64) -> 16#F001; | |
crc_index(65) -> 16#30C0; | |
crc_index(66) -> 16#3180; | |
crc_index(67) -> 16#F141; | |
crc_index(68) -> 16#3300; | |
crc_index(69) -> 16#F3C1; | |
crc_index(70) -> 16#F281; | |
crc_index(71) -> 16#3240; | |
crc_index(72) -> 16#3600; | |
crc_index(73) -> 16#F6C1; | |
crc_index(74) -> 16#F781; | |
crc_index(75) -> 16#3740; | |
crc_index(76) -> 16#F501; | |
crc_index(77) -> 16#35C0; | |
crc_index(78) -> 16#3480; | |
crc_index(79) -> 16#F441; | |
crc_index(80) -> 16#3C00; | |
crc_index(81) -> 16#FCC1; | |
crc_index(82) -> 16#FD81; | |
crc_index(83) -> 16#3D40; | |
crc_index(84) -> 16#FF01; | |
crc_index(85) -> 16#3FC0; | |
crc_index(86) -> 16#3E80; | |
crc_index(87) -> 16#FE41; | |
crc_index(88) -> 16#FA01; | |
crc_index(89) -> 16#3AC0; | |
crc_index(90) -> 16#3B80; | |
crc_index(91) -> 16#FB41; | |
crc_index(92) -> 16#3900; | |
crc_index(93) -> 16#F9C1; | |
crc_index(94) -> 16#F881; | |
crc_index(95) -> 16#3840; | |
crc_index(96) -> 16#2800; | |
crc_index(97) -> 16#E8C1; | |
crc_index(98) -> 16#E981; | |
crc_index(99) -> 16#2940; | |
crc_index(100) -> 16#EB01; | |
crc_index(101) -> 16#2BC0; | |
crc_index(102) -> 16#2A80; | |
crc_index(103) -> 16#EA41; | |
crc_index(104) -> 16#EE01; | |
crc_index(105) -> 16#2EC0; | |
crc_index(106) -> 16#2F80; | |
crc_index(107) -> 16#EF41; | |
crc_index(108) -> 16#2D00; | |
crc_index(109) -> 16#EDC1; | |
crc_index(110) -> 16#EC81; | |
crc_index(111) -> 16#2C40; | |
crc_index(112) -> 16#E401; | |
crc_index(113) -> 16#24C0; | |
crc_index(114) -> 16#2580; | |
crc_index(115) -> 16#E541; | |
crc_index(116) -> 16#2700; | |
crc_index(117) -> 16#E7C1; | |
crc_index(118) -> 16#E681; | |
crc_index(119) -> 16#2640; | |
crc_index(120) -> 16#2200; | |
crc_index(121) -> 16#E2C1; | |
crc_index(122) -> 16#E381; | |
crc_index(123) -> 16#2340; | |
crc_index(124) -> 16#E101; | |
crc_index(125) -> 16#21C0; | |
crc_index(126) -> 16#2080; | |
crc_index(127) -> 16#E041; | |
crc_index(128) -> 16#A001; | |
crc_index(129) -> 16#60C0; | |
crc_index(130) -> 16#6180; | |
crc_index(131) -> 16#A141; | |
crc_index(132) -> 16#6300; | |
crc_index(133) -> 16#A3C1; | |
crc_index(134) -> 16#A281; | |
crc_index(135) -> 16#6240; | |
crc_index(136) -> 16#6600; | |
crc_index(137) -> 16#A6C1; | |
crc_index(138) -> 16#A781; | |
crc_index(139) -> 16#6740; | |
crc_index(140) -> 16#A501; | |
crc_index(141) -> 16#65C0; | |
crc_index(142) -> 16#6480; | |
crc_index(143) -> 16#A441; | |
crc_index(144) -> 16#6C00; | |
crc_index(145) -> 16#ACC1; | |
crc_index(146) -> 16#AD81; | |
crc_index(147) -> 16#6D40; | |
crc_index(148) -> 16#AF01; | |
crc_index(149) -> 16#6FC0; | |
crc_index(150) -> 16#6E80; | |
crc_index(151) -> 16#AE41; | |
crc_index(152) -> 16#AA01; | |
crc_index(153) -> 16#6AC0; | |
crc_index(154) -> 16#6B80; | |
crc_index(155) -> 16#AB41; | |
crc_index(156) -> 16#6900; | |
crc_index(157) -> 16#A9C1; | |
crc_index(158) -> 16#A881; | |
crc_index(159) -> 16#6840; | |
crc_index(160) -> 16#7800; | |
crc_index(161) -> 16#B8C1; | |
crc_index(162) -> 16#B981; | |
crc_index(163) -> 16#7940; | |
crc_index(164) -> 16#BB01; | |
crc_index(165) -> 16#7BC0; | |
crc_index(166) -> 16#7A80; | |
crc_index(167) -> 16#BA41; | |
crc_index(168) -> 16#BE01; | |
crc_index(169) -> 16#7EC0; | |
crc_index(170) -> 16#7F80; | |
crc_index(171) -> 16#BF41; | |
crc_index(172) -> 16#7D00; | |
crc_index(173) -> 16#BDC1; | |
crc_index(174) -> 16#BC81; | |
crc_index(175) -> 16#7C40; | |
crc_index(176) -> 16#B401; | |
crc_index(177) -> 16#74C0; | |
crc_index(178) -> 16#7580; | |
crc_index(179) -> 16#B541; | |
crc_index(180) -> 16#7700; | |
crc_index(181) -> 16#B7C1; | |
crc_index(182) -> 16#B681; | |
crc_index(183) -> 16#7640; | |
crc_index(184) -> 16#7200; | |
crc_index(185) -> 16#B2C1; | |
crc_index(186) -> 16#B381; | |
crc_index(187) -> 16#7340; | |
crc_index(188) -> 16#B101; | |
crc_index(189) -> 16#71C0; | |
crc_index(190) -> 16#7080; | |
crc_index(191) -> 16#B041; | |
crc_index(192) -> 16#5000; | |
crc_index(193) -> 16#90C1; | |
crc_index(194) -> 16#9181; | |
crc_index(195) -> 16#5140; | |
crc_index(196) -> 16#9301; | |
crc_index(197) -> 16#53C0; | |
crc_index(198) -> 16#5280; | |
crc_index(199) -> 16#9241; | |
crc_index(200) -> 16#9601; | |
crc_index(201) -> 16#56C0; | |
crc_index(202) -> 16#5780; | |
crc_index(203) -> 16#9741; | |
crc_index(204) -> 16#5500; | |
crc_index(205) -> 16#95C1; | |
crc_index(206) -> 16#9481; | |
crc_index(207) -> 16#5440; | |
crc_index(208) -> 16#9C01; | |
crc_index(209) -> 16#5CC0; | |
crc_index(210) -> 16#5D80; | |
crc_index(211) -> 16#9D41; | |
crc_index(212) -> 16#5F00; | |
crc_index(213) -> 16#9FC1; | |
crc_index(214) -> 16#9E81; | |
crc_index(215) -> 16#5E40; | |
crc_index(216) -> 16#5A00; | |
crc_index(217) -> 16#9AC1; | |
crc_index(218) -> 16#9B81; | |
crc_index(219) -> 16#5B40; | |
crc_index(220) -> 16#9901; | |
crc_index(221) -> 16#59C0; | |
crc_index(222) -> 16#5880; | |
crc_index(223) -> 16#9841; | |
crc_index(224) -> 16#8801; | |
crc_index(225) -> 16#48C0; | |
crc_index(226) -> 16#4980; | |
crc_index(227) -> 16#8941; | |
crc_index(228) -> 16#4B00; | |
crc_index(229) -> 16#8BC1; | |
crc_index(230) -> 16#8A81; | |
crc_index(231) -> 16#4A40; | |
crc_index(232) -> 16#4E00; | |
crc_index(233) -> 16#8EC1; | |
crc_index(234) -> 16#8F81; | |
crc_index(235) -> 16#4F40; | |
crc_index(236) -> 16#8D01; | |
crc_index(237) -> 16#4DC0; | |
crc_index(238) -> 16#4C80; | |
crc_index(239) -> 16#8C41; | |
crc_index(240) -> 16#4400; | |
crc_index(241) -> 16#84C1; | |
crc_index(242) -> 16#8581; | |
crc_index(243) -> 16#4540; | |
crc_index(244) -> 16#8701; | |
crc_index(245) -> 16#47C0; | |
crc_index(246) -> 16#4680; | |
crc_index(247) -> 16#8641; | |
crc_index(248) -> 16#8201; | |
crc_index(249) -> 16#42C0; | |
crc_index(250) -> 16#4380; | |
crc_index(251) -> 16#8341; | |
crc_index(252) -> 16#4100; | |
crc_index(253) -> 16#81C1; | |
crc_index(254) -> 16#8081; | |
crc_index(255) -> 16#4040. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment