Integer in seine Bits zerlegen



  • Wieder was gelernt, wusste noch gar nicht, dass es so etwas gibt. Nun noch 2 Fragen:
    1. Geht das mit allen Standartdatentypen (also auch mit char)?
    2. Wie kann ich das denn parsen, also 4 Byte int zu command, bzw. command zu 4 Byte int?



  • FloFri schrieb:

    Wieder was gelernt, wusste noch gar nicht, dass es so etwas gibt. Nun noch 2 Fragen:
    1. Geht das mit allen Standartdatentypen (also auch mit char)?

    ja

    FloFri schrieb:

    2. Wie kann ich das denn parsen, also 4 Byte int zu command, bzw. command zu 4 Byte int?

    Wie meinst du das?



  • FloFri schrieb:

    1. Geht das mit allen Standartdatentypen (also auch mit char)?

    Nicht mit allen, aber mit allen ganzzahligen (d.h. float und double gehen z.B. nicht)

    2. Wie kann ich das denn parsen, also 4 Byte int zu command, bzw. command zu 4 Byte int?

    "union{int i;command c};" oder C++ reinterpret_cast<>



  • Danke! Eine letzte Frage: Ich habe eine Datei. Jetzt möchte ich in die Datei direkt hinter einander solche integer-sequenzen schreiben, bzw. lesen. Wie mache ich das denn am besten, weil, mit fstream und >> funktioniert es nicht wirklich, da er diese ganzen zahlen nicht aufteilt.



  • Ich habe jetzt das hier probiert:

    int i = 9999;
    command com = reinterpret_cast<command>(i);
    

    Der Compiler sagt allerdings, dass hier der reinterpret_cast nicht gültig ist oder kann man das nur auf einzelne felder machen?



  • fstream::read() bzw. fstream::write()

    (@reinterpret_cast: Wie lautet denn die genaue Fehlermeldung?)



  • invalid reinterpret_cast from type `int' to type `command'



  • ich habe eben in die referenz geschaut, wegen read und write, die helfen aber leider auch nicht viel weiter, da die ja in einen cstring einlesen und die anzahl der chars, die gelesen werden sollen benötigen. Ich bräuchte aber etwas, was in einen int einliest und dem am besten die anzahl der bits oder bytes, die gelesen werden sollen übergeben werden.



  • Wenn ich dich richtig verstehe, willst du command's lesen bzw. schreiben, oder? Dann versuch's mal damit:

    command c;
    char cdata[4];
    
    //schreiben:
    strcpy(cdata,c);
    out.write(cdata,4);
    
    //lesen:
    in.read(cdata,4);
    strcpy(c,cdata);
    


  • cannot convert `command' to `char*' for argument `1' to `char* strcpy(char*, const char*)'

    Ich will "nur", dass ein integer in seine bestandteile zerlegt wird, also die ersten 4 bits hier rein, die nächeten 12 da rein und die letzten 12 dort rein.


Anmelden zum Antworten