C'est bizarre. C'est un problème trivial:Problème C++ Stuffing 8 bits dans un char
Une chaîne std :: avec des bits avec une longueur multiple de 8, la première 8 est: "10011100".
//Convert each 8 bits of encoded string to bytes
unsigned char c = 0;
for(size_t i = 0; i < encoded.size(); i += 8)
{
for(size_t k = 0; k < 8; k++)
{
c <<= k;
if(encoded.at(i + k) == '1') c += 1;
//Debug for first 8 bits
if(i == 0) cout << "at k = " << k << ", c = " << (int)c << endl;
}
outFile.write(reinterpret_cast<char*>(&c), sizeof(char));
}
donne la sortie:
at k = 0, c = 1
at k = 1, c = 2
at k = 2, c = 8
at k = 3, c = 65
at k = 4, c = 17
at k = 5, c = 33
at k = 6, c = 64
at k = 7, c = 0
Ce qui n'a pas de sens. Déplacer 2 places à gauche et obtenir 8 à partir de 2 est impossible. La valeur maximum qu'il peut avoir devrait être 111b = 7d et dans ce cas devrait être 100b = 4d.
Enlight moi.