Strip parity bits in C from 8 bits of data followed by 1 parity bit

Posted by dubnde on Stack Overflow See other posts from Stack Overflow or by dubnde
Published on 2012-06-11T10:16:24Z Indexed on 2012/06/11 10:40 UTC
Read the original article Hit count: 343

Filed under:
|

I have a buffer of bits with 8 bits of data followed by 1 parity bit. This pattern repeats itself. The buffer is currently stored as an array of octets.

Example (p are parity bits):

0001 0001 p000 0100 0p00 0001 00p01 1100 ...

should become

0001 0001 0000 1000 0000 0100 0111 00 ...

Basically, I need to strip of every ninth bit to just obtain the data bits. How can I achieve this?

This is related to another question asked here sometime back.

This is on a 32 bit machine so the solution to the related question may not be applicable. The maximum possible number of bits is 45 i.e. 5 data octets

This is what I have tried so far. I have created a "boolean" array and added the bits into the array based on the the bitset of the octet. I then look at every ninth index of the array and through it away. Then move the remaining array down one index. Then I've got only the data bits left. I was thinking there may be better ways of doing this.

© Stack Overflow or respective owner

Related posts about c

    Related posts about parity