bitstring to char ("01011011" -> char)
-
Hallo,
Ich habe eine kurze Frage:
Ich habe einen string der aus einsen und nullen besteht und will jeweils 8 zeichen dieses strings in einen char "kopieren". Also ich suche im Prinzip eine Methode um aus 8 1sen und 0en einen char zu machen.Weiß jemand weiter?
vielen Dank!
Gruß
Christian
-
Weiß jetzt nicht ob es nicht wieder einen super-leckeren stringstream oder Boost-Trick gibt, aber das hier sollte es tun:
static const int[] MULTIPLIERS = { 128, 64, 32, 16, 8, 4, 2, 1 }; // Preconditions: str.length() == 8, str contains only '0's or '1's char convert (const std::string& str) { char c = 0; for(int i = 0; i < 8; ++i) c += MULTIPLIERS[i] * (str[i] - '0'); return c; }Ungetestet.
Edit: Man könnte natürlich die Multipliers auch berechnen und damit die Begrenzung auf str.length() == 8 aufheben, aber du wolltest ja schon den speziellen Fall, hier ist er

MfG SideWinder
-
Danke dir !!! Damit sollte es klappen!

-
Dazu kann man auch elegant die std::bitset-Klasse benutzen:
#include <bitset> std::bitset<8> b("01010101"); char c = static_cast<char>(b.to_ulong());
-
Die superleckere Lösung
:char convert (const std::string& str) { return std::bitset<8>(str).to_ulong(); }edit: Och, zu spät

-
Danke! Das ist ja sogar noch eleganter
