rendered paste body#include <stdio.h>
view_bits(unsigned char c) {
unsigned char bit;
int i, j;
printf("%d: ", c);
for (i=0; i<8; i++) {
bit= c<<i;
bit= bit>>i;
bit= bit>>7-i;
printf("%d", bit);
}
printf("\n");
}
int main()
{
char message[3];
message[0]= 190;
message[1]= 153;
unsigned char byte=0;
unsigned char bit=0;
unsigned char i,j;
unsigned char reg=0;
unsigned char sjekk=0;
unsigned int poly=19;
unsigned int polysize= 5;
for (i=0; i<2; i++)
{
byte= message[i];
printf("byte: ");
view_bits(byte);
for (j=0; j<8; j++)
{
/* calculate bit from byte */
bit= byte << j;
bit= bit >> 7;
printf(" bit: ");
view_bits(bit);
/* calculate reg from reg and bit */
reg= reg << 1;
reg |= bit;
printf(" reg: ");
view_bits(reg);
sjekk= reg & 16;
if (sjekk > 0)
{
reg ^= poly;
printf(" reg-ans: ");
view_bits(reg);
}
}
}
printf("adding last 4 bits\n\n");
bit=0;
for (j=0; j<4; j++)
{
/* calculate reg from reg and bit */
reg= reg << 1;
printf(" reg: ");
view_bits(reg);
sjekk= reg & 16;
if (sjekk > 0)
{
reg ^= poly;
printf(" reg-ans: ");
view_bits(reg);
}
}
/* add the crc to the message */
message[3]= reg;
return 0;
}