steinadler Geschrieben 4. April 2006 Teilen Geschrieben 4. April 2006 Hallo zusammen, (wie) kann ich in C# einer Variablen einen binären Wert zuweisen? z.B. so: int iIndex = 0110011b Gruß Steinadler Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 4. April 2006 Teilen Geschrieben 4. April 2006 Das geht nicht. C# unterstützt nur dezimale und hexadezimale Integerliterale. Wenn es auch mit einerm String als Quelle geht: System.Convert.ToInt32 hat eine Überladung mit String und Zahlensystem. Du könntest aber auch die Zahl im Kopf in Hex umrechnen, das ist ziemlich einfach. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 4. April 2006 Autor Teilen Geschrieben 4. April 2006 schade, dass das nicht geht. Trotzdem Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 4. April 2006 Teilen Geschrieben 4. April 2006 Wozu könnte man so etwas brauchen? PS: Man kann es auch leicht verändert selbst umsetzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 4. April 2006 Autor Teilen Geschrieben 4. April 2006 Ich habe 12 Buttons. Und mit der Funktion will ich in 12Bit angeben, welcher Button aktiviert werden soll und welcher nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 4. April 2006 Teilen Geschrieben 4. April 2006 Kein Problem. Dazu musst Du aber keine Binärzahlen im Quelltext angeben können. Beispiel: const int Button1 = 1; const int Button2 = 2; const int Button3 = 4; ...usw... int Variable = Button1 + Button3; // Für Button 1 und 3 gesetzt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Honkytonk Geschrieben 4. April 2006 Teilen Geschrieben 4. April 2006 Hi, Wüsste zwar spontan auch nicht warum du unbedingt direkt die Binärzahl bräuchtest, aber sei es drum. Dieser Artikel bei Codeproject müsste dir weiterhelfen. Gruß, Honky Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 5. April 2006 Autor Teilen Geschrieben 5. April 2006 Also zum Verständnis: Am Ende soll da ne Methode wie diese hier rauskommen. MeineKlasse.ButtonSammlungSetState( 10110011b ); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 5. April 2006 Teilen Geschrieben 5. April 2006 Also zum Verständnis: Am Ende soll da ne Methode wie diese hier rauskommen. MeineKlasse.ButtonSammlungSetState( 10110011b ); Das kannst Du mit dem normalen Compiler vergessen. Oder schreib Dir einen eigenen Compiler (bzw. erweitere einen anderen). Aber wo liegt für Dich bitte der Unterschied zu MeineKlasse.ButtonSammlungSetState(256+64+32+4+2); bzw. MeineKlasse.ButtonSammlungSetState(358); ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 5. April 2006 Autor Teilen Geschrieben 5. April 2006 die Funktion ist für die 12 Funktionstasten und deshalb wollte ich der Reihe nach die Bits für die Tasten setzen... es gibt ja nur zwei zustände. Und in der Methode wollte ich die bits auswerten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 5. April 2006 Teilen Geschrieben 5. April 2006 Aber wenn du sowieso ein Literal angibst, kannst du das doch auch gleich in Dezimal, oder noch einfacher, in Hex umrechnen. Das musst du doch nur ein einziges Mal tun. Das Zahlensystem wirkt sich nur auf Quellcode, Ein- und Ausgabe aus, eben überall dort, wo es auf die Darstellung ankommt. Beim Rechnen ist das egal. Bits kannst du auch mit Dezimalliteralen auswerten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 5. April 2006 Autor Teilen Geschrieben 5. April 2006 Genau, aber gerade dieses Umrechnen wollte ich umgehen, da das ja im Prinzip 12^2 verschiedene Werte sind Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 5. April 2006 Teilen Geschrieben 5. April 2006 aber gerade dieses Umrechnen wollte ich umgehen, da das ja im Prinzip 12^2 verschiedene Werte sind Was Du mit 12^2 meist, solltest Du erläutern. Dir ist aber schon klar, dass man Bits auch einzeln testen kann? 12 Tasten, zwölt Bitpositionen, 12 Zahlen, die Du beliebig addieren oder per binärem "oder" verknüpfen kannst: 2^0 = 1 2^1 = 2 2^2 = 4 2^3 = 8 2^4 = 16 2^5 = 32 2^6 = 64 2^7 = 128 2^8 = 256 2^9 = 512 2^10 = 1024 2^11 = 2048 Da ich Dir diese Trivialität nun aufgeschrieben habe, kannst Du nun das Umrechnen durch bequemes Abschreiben umgehen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 5. April 2006 Teilen Geschrieben 5. April 2006 aber gerade dieses Umrechnen wollte ich umgehen, da das ja im Prinzip 12^2 verschiedene Werte sindEs sind 2^12, also 4096. Aber wolltest du die alle in deinem Quellcode schreiben? Denn nur dafür würdest du Literale brauchen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 6. April 2006 Autor Teilen Geschrieben 6. April 2006 Ja genau.... war ein Schreibfehler: 2^12 muss das heißen. Ich wollte halt den Aufwand mit dem zusammenrechnen der einzelnen Werte (2, 4, 8 usw.) umgehen. Das lässt sich meiner Meinung nach in Binärschreibweise am einfachsten machen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 6. April 2006 Teilen Geschrieben 6. April 2006 Ich wollte halt den Aufwand mit dem zusammenrechnen der einzelnen Werte (2, 4, 8 usw.) umgehen. Das lässt sich meiner Meinung nach in Binärschreibweise am einfachsten machen. Bitte nimm es mir nicht übel, aber ich gewinne den Eindruck, dass Du überhaupt keine Ahnung hast. Wenn es Dir im Kopf für vorgegebene Bitkombinationen zu anstrengend ist: Der "+"-Operator existiert. Abgesehen davon wirst Du Dein Bit-Array sicher ohnehin dynamisch zur Laufzeit verändern und verwalten wollen, denn Du wirst ja wohl kaum auf die Idee gekommen sein, alle möglichen Kombinationen von 12 Tasten "fest verdrahtet" vorab zu programmieren. Oder irre ich mich etwa? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 7. April 2006 Autor Teilen Geschrieben 7. April 2006 Aber rein vom Funktionsaufruf in der Entwicklung. ist SetEnabled(0110011111b) nicht viel einfacher, als SetEnabled(2+4+8+16) ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 7. April 2006 Teilen Geschrieben 7. April 2006 Was meinst du mit "einfacher"? Der Compiler würde - wenn er Dualliterale verarbeiten könnte - aus beidem denselben Code machen. Wenn du mit "einfacher" meinst, dass mit dem Dualliteral einfacher zu erkennen ist, welche Bits gesetzt sind: Du kannst dir auch symbolische Konstanten für die Zweierpotenzen anlegen. Dann kannst du SetEnabled(F1 + F3 + F5 + F6) schreiben. Und ich habe es ja schon erwähnt: Es ist sehr einfach, Dualzahlen im Kopf in Hex umzurechnen. Du kannst je vier Dualziffern zu einer Hexziffer zusammenfassen. Aber eine Frage hast du immer noch nicht beantwortet: Wie viele von diesen Kombinationen willst du eigentlich in deinen Code schreiben, dass dich die Umrechnung so stört? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 7. April 2006 Teilen Geschrieben 7. April 2006 Hallo Steinadler, versuchst du vielleicht die Buttons durch eine Art Konfiguration zu setzen, die vorher irgendwo festgelegt wurde? Wenn ja könntest du ja mit einem Klassenobjekt oder mit Flags arbeiten, was mehr Sinn macht als 1100100101 oder ähnliche Konstrukte (Vorallem bei der Lesbarkeit). Ein Beispiel für die Verwendung von Flags [Flags] enum ButtonValues : long //Kannst natürlich auch andere Ganzzahltypen verwenden mit Long kannst du bis zu 64 Buttons ansprechen { NoButton = 0, Button1 = 0x00000001, //Die werte müssen 2er Potenzen sein um jeweils 1 Bit zu setzen. Button2 = 0x00000002, Button3 = 0x00000004, Button4 = 0x00000008, Button5 = 0x00000010 } [sTAThread] static void Main(string[] args) { ButtonValues buttonVals = (ButtonValues.Button1|ButtonValues.Button3); // Hier kanns du beliebig viele Flags mit | verknüpfen Console.WriteLine(((buttonVals & ButtonValues.Button1) == ButtonValues.Button1)?"Button1 Enabled":"Button1 Disabled"); Console.WriteLine(((buttonVals & ButtonValues.Button2) == ButtonValues.Button2)?"Button2 Enabled":"Button2 Disabled"); Console.WriteLine(((buttonVals & ButtonValues.Button3) == ButtonValues.Button3)?"Button3 Enabled":"Button3 Disabled"); Console.ReadLine(); } Hoffe das hilft dir weiter. MfG Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.