24 July 2012 06:46:07 PM CRC_PRB C++ version Test the CRC library. TEST01 MAKE_CRC_TABLE sets up the 256 entry CRC table. Each entry is an unsigned long integer. We'll print signed versions of the entries. CRC_TABLE N dec(CRC(N)) hex(CRC(N)) 0 0 0 1 1996959894 77073096 2 3993919788 ee0e612c 3 2567524794 990951ba 4 124634137 76dc419 5 1886057615 706af48f 6 3915621685 e963a535 7 2657392035 9e6495a3 8 249268274 edb8832 9 2044508324 79dcb8a4 10 3772115230 e0d5e91e 11 2547177864 97d2d988 12 162941995 9b64c2b 13 2125561021 7eb17cbd 14 3887607047 e7b82d07 15 2428444049 90bf1d91 16 498536548 1db71064 17 1789927666 6ab020f2 18 4089016648 f3b97148 19 2227061214 84be41de 20 450548861 1adad47d 21 1843258603 6ddde4eb 22 4107580753 f4d4b551 23 2211677639 83d385c7 24 325883990 136c9856 25 1684777152 646ba8c0 26 4251122042 fd62f97a 27 2321926636 8a65c9ec 28 335633487 14015c4f 29 1661365465 63066cd9 30 4195302755 fa0f3d63 31 2366115317 8d080df5 32 997073096 3b6e20c8 33 1281953886 4c69105e 34 3579855332 d56041e4 35 2724688242 a2677172 36 1006888145 3c03e4d1 37 1258607687 4b04d447 38 3524101629 d20d85fd 39 2768942443 a50ab56b 40 901097722 35b5a8fa 41 1119000684 42b2986c 42 3686517206 dbbbc9d6 43 2898065728 acbcf940 44 853044451 32d86ce3 45 1172266101 45df5c75 46 3705015759 dcd60dcf 47 2882616665 abd13d59 48 651767980 26d930ac 49 1373503546 51de003a 50 3369554304 c8d75180 51 3218104598 bfd06116 52 565507253 21b4f4b5 53 1454621731 56b3c423 54 3485111705 cfba9599 55 3099436303 b8bda50f 56 671266974 2802b89e 57 1594198024 5f058808 58 3322730930 c60cd9b2 59 2970347812 b10be924 60 795835527 2f6f7c87 61 1483230225 58684c11 62 3244367275 c1611dab 63 3060149565 b6662d3d 64 1994146192 76dc4190 65 31158534 1db7106 66 2563907772 98d220bc 67 4023717930 efd5102a 68 1907459465 71b18589 69 112637215 6b6b51f 70 2680153253 9fbfe4a5 71 3904427059 e8b8d433 72 2013776290 7807c9a2 73 251722036 f00f934 74 2517215374 9609a88e 75 3775830040 e10e9818 76 2137656763 7f6a0dbb 77 141376813 86d3d2d 78 2439277719 91646c97 79 3865271297 e6635c01 80 1802195444 6b6b51f4 81 476864866 1c6c6162 82 2238001368 856530d8 83 4066508878 f262004e 84 1812370925 6c0695ed 85 453092731 1b01a57b 86 2181625025 8208f4c1 87 4111451223 f50fc457 88 1706088902 65b0d9c6 89 314042704 12b7e950 90 2344532202 8bbeb8ea 91 4240017532 fcb9887c 92 1658658271 62dd1ddf 93 366619977 15da2d49 94 2362670323 8cd37cf3 95 4224994405 fbd44c65 96 1303535960 4db26158 97 984961486 3ab551ce 98 2747007092 a3bc0074 99 3569037538 d4bb30e2 100 1256170817 4adfa541 101 1037604311 3dd895d7 102 2765210733 a4d1c46d 103 3554079995 d3d6f4fb 104 1131014506 4369e96a 105 879679996 346ed9fc 106 2909243462 ad678846 107 3663771856 da60b8d0 108 1141124467 44042d73 109 855842277 33031de5 110 2852801631 aa0a4c5f 111 3708648649 dd0d7cc9 112 1342533948 5005713c 113 654459306 270241aa 114 3188396048 be0b1010 115 3373015174 c90c2086 116 1466479909 5768b525 117 544179635 206f85b3 118 3110523913 b966d409 119 3462522015 ce61e49f 120 1591671054 5edef90e 121 702138776 29d9c998 122 2966460450 b0d09822 123 3352799412 c7d7a8b4 124 1504918807 59b33d17 125 783551873 2eb40d81 126 3082640443 b7bd5c3b 127 3233442989 c0ba6cad 128 3988292384 edb88320 129 2596254646 9abfb3b6 130 62317068 3b6e20c 131 1957810842 74b1d29a 132 3939845945 ead54739 133 2647816111 9dd277af 134 81470997 4db2615 135 1943803523 73dc1683 136 3814918930 e3630b12 137 2489596804 94643b84 138 225274430 d6d6a3e 139 2053790376 7a6a5aa8 140 3826175755 e40ecf0b 141 2466906013 9309ff9d 142 167816743 a00ae27 143 2097651377 7d079eb1 144 4027552580 f00f9344 145 2265490386 8708a3d2 146 503444072 1e01f268 147 1762050814 6906c2fe 148 4150417245 f762575d 149 2154129355 806567cb 150 426522225 196c3671 151 1852507879 6e6b06e7 152 4275313526 fed41b76 153 2312317920 89d32be0 154 282753626 10da7a5a 155 1742555852 67dd4acc 156 4189708143 f9b9df6f 157 2394877945 8ebeeff9 158 397917763 17b7be43 159 1622183637 60b08ed5 160 3604390888 d6d6a3e8 161 2714866558 a1d1937e 162 953729732 38d8c2c4 163 1340076626 4fdff252 164 3518719985 d1bb67f1 165 2797360999 a6bc5767 166 1068828381 3fb506dd 167 1219638859 48b2364b 168 3624741850 d80d2bda 169 2936675148 af0a1b4c 170 906185462 36034af6 171 1090812512 41047a60 172 3747672003 df60efc3 173 2825379669 a867df55 174 829329135 316e8eef 175 1181335161 4669be79 176 3412177804 cb61b38c 177 3160834842 bc66831a 178 628085408 256fd2a0 179 1382605366 5268e236 180 3423369109 cc0c7795 181 3138078467 bb0b4703 182 570562233 220216b9 183 1426400815 5505262f 184 3317316542 c5ba3bbe 185 2998733608 b2bd0b28 186 733239954 2bb45a92 187 1555261956 5cb36a04 188 3268935591 c2d7ffa7 189 3050360625 b5d0cf31 190 752459403 2cd99e8b 191 1541320221 5bdeae1d 192 2607071920 9b64c2b0 193 3965973030 ec63f226 194 1969922972 756aa39c 195 40735498 26d930a 196 2617837225 9c0906a9 197 3943577151 eb0e363f 198 1913087877 72076785 199 83908371 5005713 200 2512341634 95bf4a82 201 3803740692 e2b87a14 202 2075208622 7bb12bae 203 213261112 cb61b38 204 2463272603 92d28e9b 205 3855990285 e5d5be0d 206 2094854071 7cdcefb7 207 198958881 bdbdf21 208 2262029012 86d3d2d4 209 4057260610 f1d4e242 210 1759359992 68ddb3f8 211 534414190 1fda836e 212 2176718541 81be16cd 213 4139329115 f6b9265b 214 1873836001 6fb077e1 215 414664567 18b74777 216 2282248934 88085ae6 217 4279200368 ff0f6a70 218 1711684554 66063bca 219 285281116 11010b5c 220 2405801727 8f659eff 221 4167216745 f862ae69 222 1634467795 616bffd3 223 376229701 166ccf45 224 2685067896 a00ae278 225 3608007406 d70dd2ee 226 1308918612 4e048354 227 956543938 3903b3c2 228 2808555105 a7672661 229 3495958263 d06016f7 230 1231636301 4969474d 231 1047427035 3e6e77db 232 2932959818 aed16a4a 233 3654703836 d9d65adc 234 1088359270 40df0b66 235 936918000 37d83bf0 236 2847714899 a9bcae53 237 3736837829 debb9ec5 238 1202900863 47b2cf7f 239 817233897 30b5ffe9 240 3183342108 bdbdf21c 241 3401237130 cabac28a 242 1404277552 53b39330 243 615818150 24b4a3a6 244 3134207493 bad03605 245 3453421203 cdd70693 246 1423857449 54de5729 247 601450431 23d967bf 248 3009837614 b3667a2e 249 3294710456 c4614ab8 250 1567103746 5d681b02 251 711928724 2a6f2b94 252 3020668471 b40bbe37 253 3272380065 c30c8ea1 254 1510334235 5a05df1b 255 755167117 2d02ef8d TEST02 CRC computes the CRC of a string of bytes. The original string: "Dr. Crypto" For the original string, CRC = 1468653847 (dec) = 5789e117 (hex) The modified string: "Dr.C rypto" After swapping C[3] and C[4], CRC = 1672989339 (dec) = 63b7ca9b (hex) After incrementing C[5] by 1: The modified string: "Dr. Csypto" CRC = 1793706151 (dec) = 6ae9c8a7 (hex) Using just the first LEN-1 values: CRC = 1451369816 (dec) = 56822558 (hex) TEST03 UPDATE_CRC_S computes the running CRC by processing a part of the string at a time. This should be the same as computing the full CRC. The original string: "Dr. Crypto" One step CRC: CRC = 1367794603 (dec) = 5186e3ab (hex) Incremental CRC: CRC = 1367794603 (dec) = 5186e3ab (hex) TEST04 UPDATE_CRC_C computes the running CRC one byte at a time. This should be the same as computing the full CRC. The original string: "Dr. Crypto" One step CRC: CRC = 1367794603 (dec) = 5186e3ab (hex) CRC computed one byte at a time: CRC = 1367794603 (dec) = 5186e3ab (hex) CRC_PRB Normal end of execution. 24 July 2012 06:46:07 PM