binärausgabe einer Variable/Klasse
-
Irgendwie brech ich mir da grad einen ab ein template zu schreiben das einen binären String aus einer class T erstellt =[
Könnte mir freundlicherweise jemand verraten warum der mist ausgibt?
Mir fällt irgendwie keine Stelle auf wo mir ein Fehler passiert sein könnte, oder geht das union so nicht?greetz
dreaddy#include <string> #include <iostream> using std::cout; template <class T> class binclass { private: struct bit { unsigned int bit00 :1; std::string tostring() { std::string retval = ""; if(bit00)retval="1";else retval="0"; return retval; } }; union floatval { bit bits[sizeof(T)*8]; T val; }; floatval value; public: binclass(T val){value.val = val;} std::string get_string(void) { std::string retval = ""; for(int i = 0; i < sizeof(T)*8; i++) { retval += value.bits[i].tostring(); } return retval; } }; int main() { char dst = 42; binclass<char> fldsp(dst); cout << fldsp.get_string(); }
-
dreaddy schrieb:
struct bit { unsigned int bit00 :1; std::string tostring() { std::string retval = ""; if(bit00)retval="1";else retval="0"; return retval; } }; union floatval { bit bits[sizeof(T)*8]; T val; };Du scheinst davon auszugehen, dass struct bit 1 Bit groß ist. Ist es aber nicht, die Mindestgröße für ein Objekt ist 1 Byte. Bitfelder wie int bit:1; sind ein Spezialfall und auch keine Objekte im eigentlichen Sinne, sie haben z.B. keine Adresse.