int get_CRC( const void * pBuf, int len )
{
//TODO: implement crc
unsigned int crc = 0;
unsigned char i;
unsigned char *ptr = (unsigned char *)pBuf;
while( len-- ) {
for(i = 0x80; i != 0; i = i >> 1) {
if((crc & 0x8000) != 0) {
crc = crc << 1;
crc = crc ^ 0x1021;
}
else {
crc = crc << 1;
}
if((*ptr & i) != 0) {
crc = crc ^ 0x1021;
}
}
ptr++;
}
return crc;
}
#include <stdio.h>
#include <string.h>
int main()
{
char buf[] = "abネ";
printf("%d\n", get_CRC(buf, strlen(buf)));
return 0;
}
aW50IGdldF9DUkMoIGNvbnN0IHZvaWQgKiBwQnVmLCBpbnQgbGVuICkKewoJLy9UT0RPOiBpbXBsZW1lbnQgY3JjIAoJdW5zaWduZWQgaW50IGNyYyA9IDA7Cgl1bnNpZ25lZCBjaGFyIGk7Cgl1bnNpZ25lZCBjaGFyICpwdHIgPSAodW5zaWduZWQgY2hhciAqKXBCdWY7Cgl3aGlsZSggbGVuLS0gKSB7CgkJZm9yKGkgPSAweDgwOyBpICE9IDA7IGkgPSBpID4+IDEpIHsKCQkJaWYoKGNyYyAmIDB4ODAwMCkgIT0gMCkgewoJCQkJY3JjID0gY3JjIDw8IDE7CgkJCQljcmMgPSBjcmMgXiAweDEwMjE7CgkJCX0KCQkJZWxzZSB7CgkJCQljcmMgPSBjcmMgPDwgMTsKCQkJfQoJCQlpZigoKnB0ciAmIGkpICE9IDApIHsKCQkJCWNyYyA9IGNyYyBeIDB4MTAyMTsgCgkJCX0KCQl9CgkJcHRyKys7Cgl9CglyZXR1cm4gY3JjOwp9CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CmludCBtYWluKCkKewoJY2hhciBidWZbXSA9ICJhYu++iCI7CgkKCXByaW50ZigiJWRcbiIsIGdldF9DUkMoYnVmLCBzdHJsZW4oYnVmKSkpOwoJcmV0dXJuIDA7Cn0K