Search code examples
algorithmencodingbytedecodingextra

Extra byte(s) after encoding/decoding


I'm currently writing program to encode and decode messages via error-correcting cyclic codes. My algorithm works fine for single messages, but I got some problems in decoding strings. Encoding and decoding work like this:

  1. Encoding algorithm receives K bit and as a result returns N bit.
  2. Decoding algorithm receives N bit and as a result returns K bit.

For example, I want to encode and decode a string. I convert string to byte array and read it bit by bit, until K bit is read. Then I encode this K bit and write all N received bits bit by bit in byte array. And so on. Decoding is same, but I decode N bits and write K bits bit by bit in byte array. There is an example of my problem.

If K = 9 (Each line is length of K to visualize my problem)

0][11100000]
00][0011101
010][111000
0000][00111
11010][1110
111010][001
0111010][11
________[0

There is one zero in the last line, which didn't fit in the previous 9 bits. So I encode it like full K bit message. And of course after decoding I receive K bit message and extra byte appears.

[00000000][0

And I don't know how to determine this extra byte. May be this zero byte was there before encoding. Could you give me some advice what should I do with my problem. May be I should change my algorithm (may be I shouldn't read it bit by bit). I'll appreciate any help. Thanks.


Solution

  • I decided to fill this gap with 0xFF byte. I use UTF8 encoding and it can't has 0xFF bytes, so I delete all 0xFF bytes at the end of the message after decoding.