Reputation: 112
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:
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.
Upvotes: 0
Views: 462
Reputation: 112
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.
Upvotes: 0
Reputation: 38942
The encoding algorithms based on variable length of bits sequences are fairly common in the 'nature'. Check the solutions for Bitwise IO at the Rosetta Code, they may give you some idea.
Upvotes: 0