Zweierpotenz in C#

doghma

Komplett-PC-Aufrüster(in)
Hallo,

folgendes:

Ich habe einen Wert, z.B. 11. Dieser beeinhaltet halt die 1,2 und 8. Wie kann ich diesen Wert am einfachsten aufschlüsseln.

schonmal danke
 
Zuletzt bearbeitet:
Sry das ich dir gestern nicht mehr geantwortet habe... War etwas stressig.

Aufsplitten in binär (das wollte der Threadersteller eigentlich ;) ) geht ganz einfach.

int value = 11;
char[] inbinary = Convert.ToString(value,2).ToCharArray();

Schon hat man das Binärformat einer Zahl in einem Char-Feld stehn und kann das durchiterieren.
 
Ok, aber als Ergebnis hab ich jetzt:

xy[0] = 1 ( = Item 3 selektiert, 8)
xy[1] = 0 ( = Item 2 nicht selektiert, 0)
xy[2] = 1 ( = Item 1 selektiert, 2)
xy[3] = 1 ( = Item 0 selektiert, 1)

Habs mit der 43 auch mal probiert. Wenn ich Das Array von hinten durchgehe, passt es. Hab dann:

xy[0] = 1 ( = Item 5 selektiert, 32)
xy[1] = 0 ( = Item 4 nicht selektiert, 0)
xy[2] = 1 ( = Item 3 selektiert, 8)
xy[3] = 0 ( = Item 2 nicht selektiert, 0)
xy[4] = 1 ( = Item 1 selektiert, 2)
xy[5] = 1 ( = Item 0 selektiert, 1)

Dann danke!
 
Ja musst natürlich von hinten durchgehen ;)
Hätte ich wohl dazuschreiben müssen :P

In xy[0] wird natürlich die höchste Zahl gespeichert, da sie im String ja auch ganz vorne stehen würde.
 
Funzt alles so wie ichs haben wollte. Items werden schön brav selektiert. Ist einfacher als ich gedacht hatte. Danke nochmals
 
int value = 11;
char[] inbinary = Array.Reverse(Convert.ToString(value,2).ToCharArray());

So hast du das ganze gleich in der richtigen Reihenfolge ;)
 
Da meckert er aber, warum auch immer (void in char[] nicht möglich). Das Array seperat reversen macht er aber....das nenn ich Logik
 
Ah ^^. Fehler gefunden.

char[] inbinary = Convert.ToString(value, 2).ToCharArray();
Array.Reverse(inbinary);

Muss man leider zweiteilen, da die Reverse Funktion das Array selbst umändert und Rückgabewert void hat ^^. Mea culpa
 
int[] zweiPint = Array.ConvertAll<char,int>(Convert.ToString(Convert.ToInt16(GridS.Rows[listSolisten.SelectedIndex].Cells[6].Value), 2).ToCharArray(), Convert.ToInt32);

Array.Reverse(zweiPint);

So schauts nu aus. Zickt nicht, fein.
 
Zurück