Bit field auslesen



  • Hallo zusammen,

    in meinem aktuellen C++/ClI Projekt habe ich in einem unmanaged Bereich folgende Struktur übernommen:

    struct TPunkte
    {
    	unsigned P1 : 2;
    	unsigned P2 : 2;
    	unsigned P3 : 2;
    	unsigned P4 : 2;
    	unsigned P5 : 2;
    	unsigned P6 : 2;
    	unsigned P7 : 2;
    	unsigned P8 : 2;
    	unsigned P9 : 2;
    	unsigned P10 : 2;
    	unsigned P11 : 2;
    	unsigned P12 : 2;
    	unsigned P13 : 2;
    	unsigned P14 : 2;
    	unsigned P15 : 2;
    	unsigned P16 : 2;
    	unsigned P17 : 2;
    	unsigned P18 : 2;
    
    	unsigned Pdummy : 4;
    };TPunkte
    

    Diese Struktur findet sich sehr oft in einer .DAT-Datei wieder, die ich mit einem BinaryReader auslese. Die Struktur wurde von einem alten Konsolen-Programm übernommen, bei dem man 18 Punkte mit einem Wert belegen konnte (entweder A, B, oder nichts).

    Diese Information ist nun in der Dat-Datei gespeichert und ich möchte diese Info mit meinem C++.Net Programm auslesen. Nur ist die Frage, wie ich diese Werte auslesen kann. so wie ich es gelesen habe, habe ich in .net als kleinsten Datentyp das "char" mit 1 Byte Größe. Wie kann ich jedoch an die Informationen gelangen, die in 2 Bit gekaselt sind? Ich habe keine Idee und bin auf Eure Hilfe angewiesen!

    Vielen Dank für eure Hilfe!!
    Gruß



  • Einen Wert einlesen, dann maskieren.



  • Hallo theta,

    könntest du mir vll ein Beispiel zeigen, was du genau damit meinst?
    zur Zeit lese ich die Werte folgenderweiße in ein Byte-Array ein... nur weiß ich leider nicht damit anzufangen 😉

    array<Byte>^ PunkteArray = binaryArray->ReadBytes(6);
    

    Als Ergebnis wird mir dann angezeigt:

    [0]: 1
    [1]: 0
    [2]: 0
    [3]: 0
    [4]: 8
    [5]: 0

    Wie kann ich das jetzt maskieren?

    Viele Dank!
    Gruß


Anmelden zum Antworten