• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

crc8(poly: u8, reflect: bool, mut value: u8) -> u81 pub(crate) const fn crc8(poly: u8, reflect: bool, mut value: u8) -> u8 {
2     let mut i = 0;
3     if reflect {
4         while i < 8 {
5             value = (value >> 1) ^ ((value & 1) * poly);
6             i += 1;
7         }
8     } else {
9         while i < 8 {
10             value = (value << 1) ^ (((value >> 7) & 1) * poly);
11             i += 1;
12         }
13     }
14     value
15 }
16 
crc16(poly: u16, reflect: bool, mut value: u16) -> u1617 pub(crate) const fn crc16(poly: u16, reflect: bool, mut value: u16) -> u16 {
18     if reflect {
19         let mut i = 0;
20         while i < 8 {
21             value = (value >> 1) ^ ((value & 1) * poly);
22             i += 1;
23         }
24     } else {
25         value <<= 8;
26 
27         let mut i = 0;
28         while i < 8 {
29             value = (value << 1) ^ (((value >> 15) & 1) * poly);
30             i += 1;
31         }
32     }
33     value
34 }
35 
crc32(poly: u32, reflect: bool, mut value: u32) -> u3236 pub(crate) const fn crc32(poly: u32, reflect: bool, mut value: u32) -> u32 {
37     if reflect {
38         let mut i = 0;
39         while i < 8 {
40             value = (value >> 1) ^ ((value & 1) * poly);
41             i += 1;
42         }
43     } else {
44         value <<= 24;
45 
46         let mut i = 0;
47         while i < 8 {
48             value = (value << 1) ^ (((value >> 31) & 1) * poly);
49             i += 1;
50         }
51     }
52     value
53 }
54 
crc64(poly: u64, reflect: bool, mut value: u64) -> u6455 pub(crate) const fn crc64(poly: u64, reflect: bool, mut value: u64) -> u64 {
56     if reflect {
57         let mut i = 0;
58         while i < 8 {
59             value = (value >> 1) ^ ((value & 1) * poly);
60             i += 1;
61         }
62     } else {
63         value <<= 56;
64 
65         let mut i = 0;
66         while i < 8 {
67             value = (value << 1) ^ (((value >> 63) & 1) * poly);
68             i += 1;
69         }
70     }
71     value
72 }
73 
crc128(poly: u128, reflect: bool, mut value: u128) -> u12874 pub(crate) const fn crc128(poly: u128, reflect: bool, mut value: u128) -> u128 {
75     if reflect {
76         let mut i = 0;
77         while i < 8 {
78             value = (value >> 1) ^ ((value & 1) * poly);
79             i += 1;
80         }
81     } else {
82         value <<= 120;
83 
84         let mut i = 0;
85         while i < 8 {
86             value = (value << 1) ^ (((value >> 127) & 1) * poly);
87             i += 1;
88         }
89     }
90     value
91 }
92