https://mbed.org/users/sam_grove/code/CRC/#ec8513f94d23