8Bit Wert in ULONG Variable aufteilen bzw auslesen??
-
Hi,
habe folgendes Problem, ich habe einen 8Bit Wert der in einer Variable gespeichert ist, die ULONG hat. So nun will ich habe nur wissen ob das 6 Bit
z.B. 0 oder 1 hat. Wie bekomme ich sowas hin?Hatt dann an eine for Schleife gedacht, nur verstehe ich diese nicht so ganz.
Kleines Beispiel wäre natürlich super.Gruß
-
if(var&(1<<5)==1) cout<<"gefunden"
-
Also var ist wohl die Variable mit ULONG und bei dem Beispiel wird das erste Bit ausgegeben richtig??
Gruß
-
ja, var ist die ULONG-Variable - aber das Beispiel testrt das 6. Bit (Zählung beignnt ab 0, deshalb steht dort "<<5").
-
Ah ok habs kapiert.
Danke.
-
müsste es nicht lauten:
if(var&(1<<5)) cout<<"gefunden"
sonst würde ja wirklich auf 1 geprüft und nicht auf 32 oder hab ich was falsch verstanden?
-
Also bei mir ist das so lines ist die Variable mit 8Bit. m_edit ist eine Variable für ein Eingabefeld was als anzeige genutzt wird (es ist schreibgeschützt bei den Eigenschaften).
Das Problem ist nun das nur wenn das 8Bit eine 1 hat es angezeigt wird. Bei den ersten 7 Bits passiert garnix. Woran kann das liegen??
for (int j=0;j<8;j++) { if(lines & (1L <<j)) { UpdateData(true); m_edit1=j; UpdateData(false); }
-
Du überschreibst in jedem Schleifendurchlauf den vorigen Wert von m_edit1.
(btw würde ich die UpdateData-Aufrufe aus der Schleife rausnehmen - und wenn der User das Eingabefeld nicht ändern kann, ist der erste überflüssig)
-
Also ich habe noch mal einen weiteren Versuch gestartet. Ist der Code so korrekt? Also lines = ULONG m_edit1 ist quasi die Anzeige. Es müsste also das 8 Bit angezeigt werden bzw. wenn es 1 ist dann soll eine 1 angezeigt werden.
if(lines & (1L << 7)==1) { UpdateData(true); m_edit1 = 1; UpdateData(false); }
Nur es funzt net und ich habe keine ahnung warum??
Gruß
-
Ich glaube es müsste so lauten (siehe oben):
if(lines & (1L << 7)) { UpdateData(true); m_edit1 = 1; UpdateData(false); }
(1<<7) ist ja NICHT 1 und [(1<<7) & lines] kann ja nur 0 o. 2^6 sein...
-
Hab Deins mal getestet, nur es funzt nicht. Ich weiß echt nich mehr
weiter.Gruß