dekodowanie wartości bajta
Ostatnio zmodyfikowano 2015-09-30 12:22
Anim Temat założony przez niniejszego użytkownika |
dekodowanie wartości bajta » 2015-09-30 11:22:04 Część :) Mam taki problem. Otóż mam obiekt typu uint8_t (wielkość 1-bajt) ... i wiem , że na co drugim bicie jest inna informacja. Jak się uzyskuje wartość przypisaną na bitach ? wiem, że mój uint8_t niesie wartość 42. |
|
mateczek |
możliwości kilka! » 2015-09-30 11:32:38 Na początku klasa którą kiedyś napisałem dla wygody!!! https://pl.wikibooks.org/wiki/Programowanie_C%2B%2B_Qt4_w_systemie_Gnu-Linux/QVariant class BitsArray { WORD data; public: BitsArray( int _data = 0 ) { data = _data; } void fromNumer( int numer ) { data = numer; } bool operator []( int bitNumer ) { return data & 1 << bitNumer; } }; #endif
użycie klasy to #include "BitsArray.h"
int main() { BitArray a( 42 ); bool bit = a[ 1 ]; cout << bit << endl; }
właściwie to robotę robi ta linijka int data = 42; bool bit = data & 1 << bitNumer;
inne rozwiązanie to skorzystanie z klasy std::bitset; bitSet < 16 > b( 42 ); cout << b[ numerBitu ] << endl;
Jeśli interesuje cię informacja zakodowana na kilku bitach. To najpierw maskę robisz a potem &. Załóżmy, iż chcę uzyskać bity w nawiasie 0001000[001]111011 ushort maska = 7 << 6;
ushort temp = data & maska;
|
|
Anim Temat założony przez niniejszego użytkownika |
» 2015-09-30 12:22:56 Dzięĸuje :) wystarczy w zupełności :) |
|
« 1 » |