C/C++ - Code zu behandeln, die ein Zeichen-array als bitstream
Ich habe einen großen Klumpen von binären Daten in ein char[] array, welches ich interpretieren muss als ein array verpackt 6-bit-Werte.
Ich könnte sitzen und code schreiben, um dies zu tun, aber ich denke, es muss eine gut erhaltene Klasse oder Funktion jemand hat es schon geschrieben.
Was ich brauche ist sowas wie:
int get_bits(char* data, unsigned bitOffset, unsigned numBits);
so konnte ich den 7. 6-bit-Zeichen in die Daten durch den Aufruf:
const unsigned BITSIZE = 6;
char ch = static_cast<char>(get_bits(data, 7 * BITSIZE, BITSIZE));
- Wahrscheinlich schneller für Sie, den code zu schreiben.
- dies würde nicht geschehen zu sein FIELDATA, wäre es? fourmilab.ch/documents/univac/fieldata.html
- Nein, es ist Reuters MarketFeed eigentlich
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktioniert möglicherweise nicht für die Größen, die größer als 8, je nach endian-system. Es ist im Grunde das, was Marco gepostet hat, aber ich bin nicht ganz sicher, warum er sammeln, um ein bit zu einer Zeit.
Boost.DynamicBitset - versuchen Sie es.
Ich denke, etwas in der Linie der folgenden arbeiten könnte.
Habe ich nicht ausgetestet, noch getestet, aber Sie können es verwenden, wie ein Ausgangspunkt.
Auch berücksichtigen bisschen um. Möchten Sie vielleicht ändern
zu
je nachdem, wie das bit-array erzeugt wurde.