Ho una stringa di 8 caratteri lunga che contieneutilizzando contenitore bitset in C++
8 byte dump esadecimale è
è 801000000000000
Significa bit 1 e 12 è acceso.
Come posso usare la funzionalità bitset in C++ e semplificarmi la vita.
Grazie
Ho una stringa di 8 caratteri lunga che contieneutilizzando contenitore bitset in C++
8 byte dump esadecimale è
è 801000000000000
Significa bit 1 e 12 è acceso.
Come posso usare la funzionalità bitset in C++ e semplificarmi la vita.
Grazie
Per fare cosa? Dov'è la domanda? Non posso davvero dare un buon esempio di "come renderà la vita più facile" senza problemi da risolvere. Tutto quello che posso fare è mostrarti le basi di come funziona la classe nell'applicazione.
Ecco un collegamento sul suo interface. Se si desidera gestire solo un insieme di bit di dimensioni semplici e costanti, è possibile crearne uno facilmente. Se vuoi uno che può crescere o restringersi, guarda a Boost. Ecco un rapido esempio con il bitset di serie:
std::bitset<40> imFiveBytesLong;
imFiveBytesLong.set(0, true);
Ora sembra
0000000000000000000000000000000000000001
con il bit set 0a. E si può verificare se è impostato il bit chiedendo:
bool isItSet = imFiveBytesLong.test(0);
Oppure si può contare il numero di bit impostati chiedendo:
std::size_t numSet = imFiveBytesLong.count();
Edit:
Per rispondere il tuo commento qui sotto controlla il metodo to_ulong di bitset e uno dei constructors di bitset. Mettiamola insieme:
int main()
{
std::bitset<10> mySet(120ul); // initialize from unsigned long
std::cout << mySet.to_uLong(); // print as an unsigned long
return 0;
}
Come posso rendere la mia stringa perfettamente senza firma e inizializzare da unsigned long? – user79292
Qual è la domanda? Non vedo '' 'dentro. – karlphillip
@karlphillip ..any? * lì dentro. –